1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án môn học xây dựng website bán hàng tích hợp chống tấn công sql injection

56 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề XÂY DỰNG WEBSITE BÁN HÀNG TÍCH HỢP CHỐNG TẤN CÔNG SQL INJECTION
Tác giả Nguyễn Tuấn Sơn, Nguyễn Đức Tuấn Anh, Phạm Huy Hiếu
Người hướng dẫn ThS. LÊ THỊ HỒNG VÂN
Trường học HỌC VIỆN KỸ THUẬT MẬT MÃ
Chuyên ngành CÔNG NGHỆ THÔNG TIN
Thể loại ĐỒ ÁN MÔN HỌC
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 56
Dung lượng 1,46 MB

Cấu trúc

  • CHƯƠNG 1. GIỚI THIỆU CHUNG VÀ KHẢO SÁT HỆ THỐNG (9)
    • 1.1. Giới thiệu chung về các ngôn ngữ (9)
      • 1.1.1. Tổng quan về HTML (9)
      • 1.1.2. Tổng quan về CSS (10)
      • 1.1.3. Tìm hiểu về ngôn ngữ Javascript (11)
      • 1.1.4. Cơ sở dữ liệu MYSQL (14)
    • 1.2. Tổng quát bài toán (15)
      • 1.2.1. Đặt vấn đề (0)
      • 1.2.2. Mô tả hoạt động của cửa hàng (0)
      • 1.2.3. Yêu cầu của hệ thống bán hàng qua mạng (0)
  • CHƯƠNG 2. XÂY DỰNG HỆ THỐNG (19)
    • 2.1. Xác định các tác nhân (19)
    • 2.2. Biểu đồ Use Case tổng quát (20)
    • 2.3. Đặc tả Use case (20)
    • 2.4. Biểu đồ hoạt động (27)
    • 2.5. Biểu đồ tuần tự (34)
    • 2.6. Cách tổ chức dữ liệu (37)
    • 2.7. Lược đồ chi tiết giữa các bảng (41)
  • CHƯƠNG 3. TRIỂN KHAI GIẢI PHÁP CHỐNG SQL INJECTION TRÊN (42)
  • WEBSITE 41 3.1. Tổng quan về SQL INJECTION (0)
    • 3.1.1. Tổng quan SQL Injection (42)
    • 3.1.2. Tác hại của SQL Injection (0)
    • 3.2. Cách tấn công và phòng tránh SQL Injection (43)
      • 3.2.1. Tấn công (43)
      • 3.2.1. Phòng tránh (0)
    • 3.3. Áp dụng vào hệ thống (47)
  • CHƯƠNG 4. SẢN PHẨM THỰC NGHIỆM (48)
    • 4.1. Trang chủ (48)
    • 4.2. Đăng nhập, đăng ký tài khoản người dùng (49)
      • 4.2.1. Giao diện form đăng nhập (49)
      • 4.2.2. Giao diện form đăng ký (49)
    • 4.3. Quá trình mua hàng (50)
      • 4.3.1. Trang giỏ hàng (50)
      • 4.3.2. Giao diện trang chi tiết sản phẩm (50)
    • 4.4. Quản trị (51)
      • 4.4.1. Đăng nhập admin (51)
      • 4.4.2. Quản lý sản phẩm (0)
      • 4.4.3. Quản lý đơn hàng (0)
      • 4.4.4. Quản lý khách hàng (0)
      • 4.4.5. Thống kê sản phẩm bán ra (0)
  • KẾT LUẬN (54)
  • TÀI LIỆU THAM KHẢO (55)

Nội dung

Ưu, nhược điểm của JavaScriptƯu điểm của JavaScript:- Dễ hiểu, dễ học hơn so với các ngôn ngữ lập trình khác- Dễ dàng phát hiện và khắc phục, sửa chữa lỗi- Hoạt động được trên nhiều nền

GIỚI THIỆU CHUNG VÀ KHẢO SÁT HỆ THỐNG

Giới thiệu chung về các ngôn ngữ

HTML là viết tắc của cụm từ HyperText Markup Language, tạm dịch là ngôn ngữ đánh dấu siêu văn bản Phiên bản đầu tiên được ra đời vào năm 1991 Một tập tin HTML chẳng qua là một tập tin bình thường, có đuôi html hoặc htm Trải qua nhiều phiên bản đến 2014 đã được nâng cấp lên thành HTML với nhiều thẻ mới được bổ sung

HTML đóng vai trò tạo dựng nên bộ khung xương cho trang web Khi viết các trình duyệt như Chrome, Firefox, Opera sẽ hiểu được và hiển thị để cho người dùng dễ dàng nhìn thấy hơn Tuy nhiên cần có sự góp mặt của ngôn ngữ CSS, sẽ định dạng hiển thị trở nên đẹp mắt hơn.

Cấu trúc chung của một trang HTML

Tiêu đề của trang Web

Một số thẻ HTML cơ bản

1 Thẻ : Tạo đầu mục trang

2 Thẻ : Tạo tiêu đề trang trên thanh tiêu đề, đây là thẻ bắt buộc

Thẻ title cho phép bạn trình bày chuỗi trên thanh tựa đề của trang Web mỗi khi trang Web đó được duyệt trên trình duyệt Web.

3 Thẻ : Tất cả các thông tin khai báo trong thẻ đều có thể xuất hiện trên trang Web Những thông tin này có thể nhìn thấy trên trang Web.

4 Thẻ hình ảnh : Cho phép bạn chèn hình ảnh vào trang Web Thẻ này thuộc loại thẻ không có thẻ đóng.

5 Thẻ liên kết : Là loại thẻ dùng để liên kết giữa các trang Web hoặc liên kết đến địa chỉ Internet, Mail hay Intranet(URL) và địa chỉ trong tập tin trong mạng cục bộ (UNC).

CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (HTML) Nói ngắn gọn hơn là ngôn ngữ tạo phong cách cho trang web Bạn có thể hiểu đơn giản rằng, nếu HTML đóng vai trò định dạng các phần tử trên website như việc tạo ra các đoạn văn bản, các tiêu đề, bảng,…thì CSS sẽ giúp chúng ta có thể thêm style vào các phần tử HTML đó như đổi bố cục, màu sắc trang, đổi màu chữ, font chữ, thay đổi cấu trúc…

CSS được phát triển bởi W3C (World Wide Web Consortium) vào năm 1996, vì HTML không được thiết kế để gắn tag để giúp định dạng trang web.

Phương thức hoạt động của CSS là nó sẽ tìm dựa vào các vùng chọn, vùng chọn có thể là tên một thẻ HTML, tên một ID, class hay nhiều kiểu khác Sau đó là nó sẽ áp dụng các thuộc tính cần thay đổi lên vùng chọn đó.

Mối tương quan giữa HTML và CSS rất mật thiết HTML là ngôn ngữ markup (nền tảng của site) và CSS định hình phong cách (tất cả những gì tạo nên giao diện website), chúng là không thể tách rời.

Bố cục và cấu trúc một đoạn CSS

Bố cục CSS thường chủ yếu dựa vào hình hộp và mỗi hộp đều chiếm những khoảng trống trên trang của bạn với các thuộc tính như:

● Padding: Gồm không gian xung quanh nội dung (ví dụ: xung quanh đoạn văn bản).

● Border: Là đường liền nằm ngay bên ngoài phần đệm.

● Margin: Là khoảng cách xung quanh bên ngoài của phần tử. vùng chọn { thuộc tính : giá trị; thuộc tính: giá trị; }

CSS sẽ được khai báo bằng vùng chọn, sau đó các thuộc tính và giá trị sẽ nằm bên trong cặp dấu ngoặc nhọn {} Mỗi thuộc tính sẽ luôn có một giá trị riêng, giá trị có thể là dạng số, hoặc các tên giá trị trong danh sách có sẵn của CSS Phần giá trị và thuộc tính phải được cách nhau bằng dấu hai chấm, và mỗi một dòng khai báo thuộc tính sẽ luôn có dấu chấm phẩy ở cuối Một vùng chọn có thể sử dụng không giới hạn thuộc tính.

Cách nhúng CSS vào website Để CSS có thể thực thi trên website hoặc HTML Documents thì phải tiến hành nhúng CSS vào website Nếu không, các định dạng CSS sẽ không thực thi trên HTML.

Có 3 cách nhúng CSS vào website:

● Inline CSS – Nhúng trực tiếp vào tài liệu HTML thông qua cặp thẻ

● Internal CSS – dùng thẻ bên trong thẻ của HTML để tạo ra nơi viết mã CSS.

● External CSS – Tạo một tập tin css riêng và nhúng vào tài liệu HTML thông qua cặp thẻ .

Inline CSS Đặt thuộc tính style vào thẻ mở của phần tử HTML, giá trị của thuộc tính style là các cặp thuộc tính định dạng CSS Mã CSS chỉ tác động nên chính phần tử đó.

Internal CSS Đặt các cặp thuộc tính định dạng CSS vào bên trong cặp thẻ Cặp thẻ thì được đặt bên trong cặp thẻ

Với External CSS: Ta đặt các thuộc tính định dạng vào bên trong tập tin CSS Đây là một tập tin hoàn toàn độc lập so với file (File này thường được đặt phần mở rộng là css) sau đó dùng thẻ link đặt ở phần head (cặp thẻ của các tập tin HTML) để có thể thực hiện nhúng tập tin CSS vào trang web.

1.1.3 Tìm hiểu về ngôn ngữ Javascript

JavaScript là một trong số các ngôn ngữ lập trình chính trong thiết kế website bên cạnh HTML và CSS Chúng được tích hợp, nhúng vào HTML để tạo web động, tăng tính tương tác và phát triển những ứng dụng mạng chạy trên máy chủ/ client. Một số thư viện, khung viết từ JavaScript:

- js: Ứng dụng thời gian thực

- ReactJS: Chuyên xây dựng ứng dụng di động

- AngularJS: Chuyên viết ứng dụng cá nhân. Ưu, nhược điểm của JavaScript Ưu điểm của JavaScript:

- Dễ hiểu, dễ học hơn so với các ngôn ngữ lập trình khác

- Dễ dàng phát hiện và khắc phục, sửa chữa lỗi

- Hoạt động được trên nhiều nền tảng trình duyệt

- Hỗ trợ web tương tác hiệu quả với người truy cập.

- Tiết kiệm lưu lượng tải dữ liệu cho máy chủ (server) do người dùng sẽ xác nhận input (đầu vào) rồi mới gửi web đến máy chủ.

- Ngôn ngữ lập trình JavaScript cho phép tạo nhiều giao diện khác nhau.

- Phản hồi tức thời đến người truy cập.

- Chỉ chạy được trong trình duyệt web

- Bị khai thác dễ dàng

- Không đồng nhất do mỗi thiết bị sẽ được triển khai khác nhau

- Dễ bị sử dụng để thực thi mã độc trên máy người sử dụng.

Cách thức hoạt động và ứng dụng của Javascript

Cách thức JavaScript hoạt động: Ngôn ngữ JavaScript được nhúng trực tiếp vào website hay được tham chiếu qua thư mục js riêng biệt, Script sau khi được tải về máy sẽ được xử lý tại chỗ Ứng dụng của JavaScript:

- Lập trình website: Js hỗ trợ tạo hiệu ứng trên web, tạo các tương tác với người sử dụng.

- Xây dựng các app, ứng dụng, tạo trò chơi

- Tạo ứng dụng web cho server (máy chủ).

- >>> JavaScript được đánh giá là ngôn ngữ phù hợp với người bắt đầu học lập trình hoặc yêu thích phát triển web front-end/ full stack; am hiểu về JavaScript rất có lợi cho lập trình viên.

Sự khác biệt giữa các ngôn ngữ lập trình với JavaScrip t

Java và JavaScript có phải là một?

Tổng quát bài toán

Hiện nay với sự phát triển không ngừng của công nghệ thì nhu cầu của con người ngày càng tăng Trên thị trường hiện nay một phương tiện thông tin đã trở nên quen thuộc với chúng ta đó là điện thoại Chỉ với một vài thao tác bạn đã có thể kết nối tới bạn bè, người thân của mình trên khắp đất nước Không những nó là một phương tiện liên lạc mà còn đóng góp quan trọng trong các công việc làm ăn của các doanh nhân Còn đối với giới trẻ thì điện thoại di động đã dần trở thành một thứ đồ trang sức.

Thegioididong.com là một trong những website đặc thù áp dụng công nghệ thông tin vào hoạt động bán điện thoại qua mạng và sau này sẽ có xu hướng mở rộng.Và là một cửa hàng chuyên nhập điện thoại di động từ các công ty phân phối nổi tiếng như Nokia, Samsung, Motorola, Sony,… để bán lẻ lại cho người tiêu dùng Việc giao dịch với khách hàng chủ yếu diễn ra trên website.

Mục tiêu xây dựng trang web này nhằm giúp cho khách hàng có thể mua hàng trực tiếp từ xa thông qua mạng internet Khách hàng ở nhà hay tại cửa hàng vẫn có thể dễ dàng tham khảo thông tin sản phẩm mình tìm, so sánh giá cả các mặt hàng và lựa chọn cho mình loại sản phẩm phù hợp nhu cầu của mình, giúp công việc mua sắm một cách nhanh chóng, tiện lợi, tiết kiệm thời gian, đáp ứng được nhu cầu thực tế Hệ thống tìm kiếm dễ dàng, giao diện thân thiện Chỉ cần đăng nhập vào hệ thống với tài khoản đã có hay chỉ cần vài thao tác đăng ký đơn giản là khách hàng có thể tự do chọn mua và tạo đơn đặt hàng tại hệ thống.

1.1.2 Mô tả hoạt động của cửa hàng

- Quản lý và phân phối hoạt động của cửa hàng.

- Quyết định giá chính thức cho từng mặt hàng.

- Bán hàng qua mạng là một hình thức mới mà người mua hàng phải phải tự thao tác thông qua từng bước để có thể mua được hàng.

- Các sản phẩm được sắp xếp, phân chia theo nhiều chủng loại hàng hóa và có nhiều mặt hàng khác nhau để giúp cho người dùng dễ sử dụng, giúp cho người quản trị dễ thay thế, thêm bớt sản phẩm của mình Trong cách này, người dùng chỉ cần chọn một sản phẩm nào từ trong danh sách của từng loại sản phẩm thì những thông tin về loại sản phẩm đó sẽ hiện lên theo tên hàng hóa, hình ảnh, giá bán và nhưng mô tả ngắn về loại thiết bị đó, bên cạnh là trang liên kết để thêm sản phẩm vào trong giỏ mua hàng.

- Giỏ hàng chứa các thông tin lẫn số lượng hàng hóa người dùng mua và có thể được cập nhật vào trong giỏ.

- Khi khách hành muốn đặt hàng thì hệ thống hiển thị trang xác lập đơn đặt hàng cùng với thông tin về khách hàng và hàng hóa.

- Công việc của bộ phận này là thực hiện các nhiệm vụ quản trị mạng, quản lý thông tin của khách hàng, cập nhật thông tin của sản phẩm,… đảm bảo cơ sở dữ liệu luôn được cập nhật nhanh chóng.

1.1.3 Yêu cầu của hệ thống bán hàng qua mạng

Nhu cầu người sử dụng

- Nhu cầu của khách hàng khi truy cập vào trang web là tìm kiếm các sản phẩm

Do đó yêu cầu của chương trình là phải đáp ứng được những nhu cầu đó, sao cho khách hàng có thể tìm kiếm nhanh chóng và hiệu quả các loại sản phẩm mà họ muốn và cần mua.

- Chương trình phải có tính đa dạng và hấp dẫn nhằm thu hút sự quan tâm của nhiều người về công ty mình.

- Trang web phải dễ hiểu, giao diện phải dễ dùng, hấp dẫn và quan trọng là làm sao cho khách thấy những thông tin cần tìm cũng như thông tin liên quan.

- Điều quan trọng trong mua bán qua mạng là phải đảm bảo an toàn tuyệt đối những thông tin liên quan đến người dùng trong quá trình đặt mua hay thanh toán cũng được đảm bảo hàng được chuyển giao đúng nơi, đúng lúc.

Trang web đòi hỏi người quản trị phải thường xuyên theo dõi các thông tin về hàng hóa, xử lý đúng yêu cầu, đúng chức năng do mình nhập vào và thao tác dễ dàng với công việc quản lý dữ liệu:

- Được phép chỉnh sửa, xóa những thông tin sai, không phù hợp.

- Theo dõi quá trình mua bán.

- Theo dõi thông tin khách hàng nhập vào khi mua hàng, phải đảm bảo tính an toàn, bảo mật, chính xác.

- Theo dõi, xử lý các đơn đặt hàng và cập nhật các thông tin liên quan đến đơn đặt hàng của khách.

XÂY DỰNG HỆ THỐNG

Xác định các tác nhân

Administrator( Quản trị viên): là thành viên quản trị của hệ thống, có các quyền và chức năng như: tạo các tài khoản, quản lý sản phẩm, quản trị người dùng,…

Customer ( Thành viên): là hệ thống thành viên có chức năng: đăng ký, đăng nhập, tìm kiếm, xem, sửa thông tin cá nhân, xem giỏ hàng, đặt hàng,

Guess( Khách vãng lai): là Khách hàng chưa đăng ký, có chức năng: đăng ký, tìm kiếm, xem thông tin sản phẩm, thêm sản phẩm vào giỏ hàng và xem giỏ hàng.

Biểu đồ Use Case tổng quát

Biểu đồ Use Case tổng quát

Hình 2.1 Biểu đồ Use Case tổng quát

Đặc tả Use case

Đặc tả use case Tìm kiếm thông tin sản phẩm

Mô tả quá trình người dùng tìm kiếm sản phẩm

Ca sử dụng Tìm kiếm thông tin sản phẩm

Tác nhân Administrator hoặc Customer hoặc Guess

Mô tả Người dùng tìm kiếm sản phẩm Điều kiện trước Người dùng đang ở trang chủ

Luồng sự kiện chính 1 Người dùng nhập hoặc lựa chọn thông tin tìm kiếm theo giá, hãng,

2 Hệ thống tìm kiếm trong CSDL và hiển thị sản phẩm trùng khớp với tiêu chí tìm kiếm

Bảng 2.3 Đặc tả usecase Tìm kiếm thông tin sản phẩm Đặc tả use case Xem thông tin sản phẩm

Mô tả quá trình người dùng xem thông tin sản phẩm

Ca sử dụng Xem thông tin sản phẩm

Tác nhân Administrator hoặc Customer hoặc Guess

Mô tả Người dùng xem thông tin sản phẩm Điều kiện trước Sản phẩm đang được hiển thị

Luồng sự kiện chính 1 Người dùng click vào sản phẩm muốn xem

2 Hệ thống lấy thông tin sản phẩm từ CSDL và hiển thị chi tiết

Bảng 2.4 Đặc tả use case Xem thông tin sản phẩm Đặc tả use case Xem giỏ hàng

Mô tả quá trình tương tác giữa người dùng và hệ thống để xem giỏ hàng

Ca sử dụng Xem giỏ hàng

Tác nhân Customer hoặc Guess

Mô tả Người dùng xem giỏ hàng Điều kiện trước Biểu tượng giỏ hàng được hiển thị

Luồng sự kiện chính 1 Người dùng click vào giỏ hàng

2 Hệ thống lấy thông tin của giỏ hàng và hiển thị, bao gồm sản phẩm, số lượng, tổng số tiền,

Bảng 2.5 Đặc tả use case Xem giỏ hàng Đặc tả use case Thêm sản phẩm vào giỏ hàng

Mô tả hoạt động để người dùng thêm sản phẩm vào giỏ hàng

Ca sử dụng Thêm sản phẩm vào giỏ hàng

Tác nhân Customer hoặc Guess

Mô tả Người dùng xem giỏ hàng Điều kiện trước Sản phẩm đang hiển thị

Luồng sự kiện chính 1 Người dùng click vào giỏ hàng

2 Hệ thống lấy thông tin của giỏ hàng và hiển thị, bao gồm sản phẩm, số lượng, tổng số tiền,

Bảng 2.6 Đặc tả use case Thêm sản phẩm vào giỏ hàng Đặc tả use case Đăng ký thành viên

Mô tả quá trình đăng ký thành viên mới

Ca sử dụng Đăng ký thành viên

Tác nhân Administrator hoặc Guess

Mô tả Người dùng đăng ký thành viên mới Điều kiện trước Người dùng đang ở trang chủ

Luồng sự kiện chính 1 Người dùng bấm đăng ký và nhập các thông tin theo form.

2 Hệ thống kiểm tra thông tin nhập vào, nếu thông tin hợp lệ thì tài khoản thành viên sẽ được thêm vào CSDL

Luồng sự kiện phụ Nếu thông tin không hợp lệ, hiển thị thông báo yêu cầu nhập lại

Bảng 2.7 Đặc tả usecase Đăng ký thành viên Đặc tả use case Đặt hàng

Mô tả quá trình đặt hàng qua mạng

Ca sử dụng Đặt hàng

Mô tả Người dùng xác nhận mua hàng qua mạng Điều kiện trước Sản phẩm đang được hiển thị

Luồng sự kiện chính 1 Người dùng click vào nút đặt hàng và điền các thông tin cần thiết như địa chỉ, số điện thoại, chọn phương thức thanh toán,

2 Hệ thống lưu thông tin khách hàng và hoá đơn, thông báo đặt hàng thành công hay không thành công.

Bảng 2.8 Đặc tả use case Đặt hàng Đặc tả use case Đăng nhập

Mô tả quá trình người dùng đăng nhập

Ca sử dụng Đăng nhập

Tác nhân Administrator hoặc Customer

Mô tả Người dùng đăng nhập vào hệ thống Điều kiện trước Người dùng đã có tài khoản

Luồng sự kiện chính 1 Người dùng click vào đăng nhập và điền tên đăng nhập, mật khẩu.

2 Hệ thống so sánh thông tin với tên đăng nhập, mật khẩu trong CSDL

3 Nếu đúng, cho phép đăng nhập và hiển thị các chức năng của Customer

Luồng sự kiện 4 Nếu sai, hiển thị thông báo sai thông tin đăng nhập và yêu cầu nhập lại.

Bảng 2.9 Đặc tả use case Đăng nhập Đặc tả use case Đăng xuất

Mô tả quá trình người dùng đăng xuất

Ca sử dụng Đăng xuất

Tác nhân Administrator hoặc Customer

Mô tả Người dùng đăng xuất khỏi hệ thống Điều kiện trước Người dùng đã đăng nhập vào hệ thống

Luồng sự kiện chính 1 Người dùng click vào đăng xuất

2 Hệ thống tiến hành xóa session lưu thông tin đăng nhập để dừng phiên làm việc của Customer

Bảng 2.10 Đặc tả use case Đăng xuất Đặc tả use case Đổi mật khẩu

Mô tả quá trình người dùng đổi mật khẩu

Ca sử dụng Đổi mật khẩu

Tác nhân Administrator hoặc Customer

Mô tả Người dùng đổi mật khẩu Điều kiện trước Người dùng đã đăng nhập vào hệ thống

Luồng sự kiện chính 1 Người dùng click vào đổi mật khẩu, nhập mật khẩu cũ và mật khẩu mới

2 Hệ thống kiểm tra mật khẩu cũ và mới, nếu hợp lệ thì cập nhật mật khẩu mới vào CSDL

Luồng sự kiện phụ 3 Nếu mật khẩu cũ không đúng thì không cho phép đổi mật khẩu, thông báo sai mật khẩu cũ

4 Nếu mật khẩu mới không hợp lệ thì không lưu và thông báo nhập lại mật khẩu mới

Bảng 2.11 Đặc tả use case Đổi mật khẩu Đặc tả use case Thêm sản phẩm

Mô tả quá trình quản trị viên thêm sản phẩm mới

Ca sử dụng Thêm sản phẩm

Mô tả Administrator thêm sản phẩm mới vào CSDL Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình

Luồng sự kiện chính 1 Administrator click vào thêm sản phẩm và điền các thông tin cần thiết

2 Hệ thống kiểm tra thông tin sản phẩm được nhập vào, nếu hợp lệ thì thêm vào CSDL

Luồng sự kiện phụ 3 Nếu thiếu thông tin hoặc thông tin không hợp lệ thì không lưu vào CSDL và thông báo thông tin không hợp lệ

Bảng 2.12 Đặc tả use case Thêm sản phẩm Đặc tả use case Sửa thông tin sản phẩm

Mô tả hoạt động diễn ra khi Quản trị viên sửa thông tin sản phẩm

Ca sử dụng Sửa thông tin sản phẩm

Mô tả Administrator sửa thông tin sản phẩm Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình

Luồng sự kiện chính 1 Administrator click vào thêm sản phẩm và điền các thông tin cần thiết

2 Hệ thống kiểm tra thông tin sản phẩm được nhập vào, nếu hợp lệ thì thêm vào CSDL

Luồng sự kiện phụ 3 Nếu thiếu thông tin hoặc thông tin không hợp lệ thì không lưu vào CSDL và thông báo thông tin không hợp lệ

Bảng 2.13 Đặc tả use case Sửa thông tin sản phẩm Đặc tả use case Xóa sản phẩm

Mô tả hoạt động diễn ra khi Quản trị viên xoá sản phẩm

Ca sử dụng Xoá sản phẩm

Mô tả Administrator xóa sản phẩm Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình

Luồng sự kiện chính 1 Administrator chọn sản phẩm cần xóa và xác nhận xóa

2 Hệ thống xoá sản phẩm khỏi CSDL

Bảng 2.14 Đặc tả use case Xoá sản phẩm Đặc tả use case Xóa thành viên

Mô tả hoạt động khi Quản trị viên xoá tài khoản thành viên

Ca sử dụng Xoá thành viên

Mô tả Administrator xóa thành viên Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình

Luồng sự kiện chính 1 Administrator chọn tài khoản Customer cần xóa, click xóa và xác nhận xoá

2 Hệ thống xoá Customer khỏi CSDL

Bảng 2.15 Đặc tả use case Xoá thành viên

Biểu đồ hoạt động

Biểu đồ hoạt động Đăng nhập

Mô tả hoạt động của hệ thống khi người dùng đăng nhập

Hình 2.2 Biểu đồ hoạt động Đăng nhập Biểu đồ hoạt động Đăng xuất

Mô tả hoạt động của hệ thống khi người dùng đăng xuất

Hình 2.3 Biểu đồ hoạt động Đăng xuất

Biểu đồ hoạt động Đăng ký thành viên

Mô tả hoạt động của hệ thống khi người dùng đăng ký thành viên mới

Hình 2.4 Biểu đồ hoạt động Đăng ký thành viên

Biểu đồ hoạt động Xem thông tin sản phẩm

Mô tả hoạt động của hệ thống khi người dùng xem thông tin sản phẩm

Hình 2.5 Biểu đồ hoạt động Xem thông tin sản phẩm Biểu đồ hoạt động Thêm sản phẩm vào giỏ hàng

Mô tả hoạt động của hệ thống khi người dùng thêm sản phẩm vào giỏ hàng

Hình 2.6 Biểu đồ hoạt động Thêm sản phẩm vào giỏ hàng Biểu đồ hoạt động Đặt hàng

Mô tả hoạt động của hệ thống khi người dùng đặt hàng

Hình 2.7 Biểu đồ hoạt động Đặt hàng

Biểu đồ hoạt động Đổi mật khẩu

Mô tả hoạt động của hệ thống khi người dùng đổi mật khẩu

Hình 2.8 Biểu đồ hoạt động Đổi mật khẩu Biểu đồ hoạt động Thêm sản phẩm

Mô tả hoạt động của hệ thống khi Quản trị viên thêm mới sản phẩm

Hình 2.9 Biểu đồ hoạt động Thêm sản phẩm Biểu đồ hoạt động Sửa thông tin sản phẩm

Mô tả hoạt động của hệ thống khi Quản trị viên sửa thông tin sản phẩm

Hình 2.10 Biểu đồ hoạt động Sửa thông tin sản phẩm Biểu đồ hoạt động Xoá sản phẩm

Mô tả hoạt động của hệ thống khi Quản trị viên xoá sản phẩm

Hình 2.11 Biểu đồ hoạt động Xoá sản phẩm

Biểu đồ hoạt động xoá thành viên

Mô tả hoạt động của hệ thống khi Quản trị viên xoá tài khoản thành viên

Hình 2.12 Biểu đồ hoạt động xoá thành viên

Biểu đồ tuần tự

Biểu đồ tuần tự chức năng Đăng ký

Hình 2.13 Biểu đồ tuần tự chức năng Đăng ký Biểu đồ tuần tự chức năng Đăng nhập

Hình 2.14 Biểu đồ tuần tự chức năng Đăng nhập

Biểu đồ tuần tự chức năng Đổi mật khẩu

Hình 2.15 Biểu đồ tuần tự chức năng Đổi mật khẩu

Biểu đồ tuần tự chức năng Tìm kiếm sản phẩm

Hình 2.16 Biểu đồ tuần tự chức năng Tìm kiếm sản hẩm

Biểu đồ tuần tự chức năng Thêm mới sản phẩm

Hình 2.17 Biểu đồ tuần tự chức năng Thêm mới sản phẩm Biểu đồ tuần tự chức năng Sửa thông tin sản phẩm

Hình 2.18 Biểu đồ tuần tự chức năng Sửa thông tin sản phẩm

Biểu đồ tuần tự chức năng Xóa sản phẩm

Hình 2.19 Biểu đồ tuần tự chức năng Xoá sản phẩm

Cách tổ chức dữ liệu

Dùng để lưu thông tin về giỏ hàng của khách hàng

Tên Kiểu Null Chú thích

MaHD int(11) No Mã hoá đơn

MaSP int(11) No Mã sản phẩm

SoLuong int(11) No Số lượng

DonGia float(11) No Đơn giá

Bảng 2.16 Bảng chitiethoadon Bảng danhgia

Dùng để lưu các đánh giá của khách hàng về sản phẩm

Tên Kiểu Null Chú thích

MaSP int(11) No Mã sản phẩm

MaND varchar(10) No Mã người dùng

BinhLuan varchar(255) No Bình luận

NgayLap datetime No Ngày lập

Dùng để lưu thông tin về các hoá đơn

Tên Type Null Chú thích

MaHD int(11) No Mã hoá đơn

MaND int(11) No Mã người dùng

NgayLap datetime No Ngày lập

NguoiNhan varchar(50) No Người nhận

SDT varchar(50) No Số điện thoại

DiaChi varchar(100) No Địa chỉ

PhuongThucTT varchar(20) No Phương thức thanh toán

TongTien float No Tổng tiền

TrangThai varchar(70) No Trạng thái

Bảng 2.18 Bảng hoadon Bảng loaisanpham

Dùng để lưu các loại, hãng sản xuất sản phẩm

Tên Kiểu Null Chú thích

MaLSP int(11) No Mã loại sản phẩm

TenLSP varchar(70) No Tên loại sản phẩm

HinhAnh varchar(200) No Hình ảnh

MoTa varchar(200) No Mô tả

Bảng 2.19 Bảng loaisanpham Bảng khuyenmai

Dùng để lưu các chương trình khuyến mãi

Tên Kiểu Null Chú thích

MaHD int(11) No Mã hoá đơn

TenKM varchar(10) No Tên khuyến mãi

LoaiKM varchar(2) No loại khuyến mãi

GiaTriKM float No giá trị khuyến mãi

NgayBD datetime No ngày bắt đầu

NgayKT datetime No ngày kết thúc

Bảng 2.20 Bảng khuyenmai Bảng nguoidung

Dùng để lưu thông tin người dùng

Tên Type Null Chú thích

MaND int(11) No Mã người dùng

GioiTinh varchar(10) No Giới tính

SDT varchar(20) No Số điện thoại

DiaChi varchar(200) No Địa chỉ

TaiKhoan varchar(100) No Tài khoản( Username)

MatKhau varchar(100) No Mật khẩu( Password)

MaQuyen int(11) No Mã quyền

TrangThai int(11) No Trạng thái

Tên Type Null Chú thích

MaQuyen int(11) No Mã quyền

TenQuyen varchar(20) No Tên quyền

ChiTietQuyen varchar(255) No Chi tiết quyền

Bảng 2.22 Bảng phanquyen Bảng sanpham

Dùng để quản lý các sản phẩm

Tên Type Null Chú thích

MaSP int(11) No Mã sản phẩm

MaLSP int(11) No Mã loại sản phẩm

TenSP varchar(70) No Tên sản phẩm

DonGia int(10) No Đơn giá

SoLuong int(11) No Số lượng

HinhAnh varchar(200) No Hình ảnh

MaKM int(11) No Mã khuyến mãi

ManHinh varchar(50) No Màn hình

HDH varchar(50) No Hệ điều hành

CamSau varchar(50) No Cam sau

CamTruoc varchar(50) No Cam trước

Ram varchar(50) No Bộ nhớ RAM

Rom varchar(50) No Bộ nhớ ROM

SDCard varchar(50) No Thẻ nhớ

SoSao int(11) No Số sao

SoDanhGia int(11) No Số đánh giá

TrangThai int(11) No Trạng thái

Lược đồ chi tiết giữa các bảng

Hình 2.20 Lược đồ chi tiết giữa các bảng

3.1 Tổng quan về SQL INJECTION

Tổng quan SQL Injection

Việc thiết kế và đưa website vào hoạt động luôn đòi hỏi các nhà phát triển phải quan tâm đến vấn đề an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tin tặc tấn công Thường các nhà phát triển tập trung vào các vấn đề an toàn của hệ điều hành, hệ quản trị CSDL, webserver … Tuy nhiên, có một nguy cơ tiềm ẩn ít được quan tâm đó là các đoạn mã của ứng dụng Một trong số đó là SQL Injection.

SQL Injection là một kỹ thuật chèn code được sử dụng trong tấn công các ứng dụng chứa dữ liệu (data-driven) Trong đó, các lệnh SQL độc hại được chèn vào trong một entry field để thực thi (chẳng hạn như để kết xuất nội dung Cơ sở dữ liệu cho hacker) SQL Injection phải khai thác lỗ hổng bảo mật trong phần mềm của ứng dụng.

SQL Injection chủ yếu được biết đến như một vector tấn công dành cho các trang web Nhưng nó cũng có thể được dùng để tấn công bất kỳ loại cơ sở dữ liệu SQL nào Các cuộc tấn công SQL Injection cho phép hacker giả mạo danh tính, xáo trộn dữ liệu Hay gây ra các vấn đề như làm mất hiệu lực giao dịch, thay đổi số dư, tiết lộ hay phá hủy dữ liệu trên hệ thống Thậm chí là làm dữ liệu không khả dụng hoặc trở thành admin của server cơ sở dữ liệu.

1.1.1 Tác hại của SQL Injection

Khi một ứng dụng web bị tấn công SQL Injection, hậu quả để lại là vô cùng lớn: Đọc được dữ liệu không được phép truy nhập trong CSDL: Kẻ tấn công có thể đọc được những dữ liệu quan trọng trong cơ sở dữ liệu như thông tin về tài khoản user (bao gồm cả email, password, thông tin về thẻ ngân hàng , ); các thông tin về tài khoản người quản trị admin, thông tin về server,

Sửa đổi trái phép: Trong kỹ thuật tấn công SQL Injection, thông qua việc chèn các câu lệnh như insert, update, delete, vào các câu lệnh truy vấn cơ sở dữ liệu, kẻ tấn công có thể thực hiện việc thêm, sửa, xóa các trường trong cơ sở dữ liệu một cách tùy ý mà không cần bất cứ một quyền nào cả.

Ngoài ra , kẻ tấn công có thể lợi dụng để đăng nhập với quyền admin để thực hiện việc sửa đổi cơ sở dữ liệu một cách hợp pháp.

Thực hiện mã tấn công từ xa: Ngoài việc chèn vào các câu lệnh truy vấn vào cơ sở dữ liệu, kẻ tấn công có thể chèn vào các đoạn mã script nguy hiểm , phục vụ cho các mục đích tấn công khác, tấn công từ xa vào hệ thống ứng dụng web

Một nghiên cứu từ Imperva Web Application Attack Report (WAAR) xuất bản tháng 2/2020 chỉ ra : 29% ứng dụng web vẫn chịu tấn công từ SQL Injection.

Hình 3.21 Top 10 lỗ hổng phổ biến nhất theo OWASP (theo % ứng dụng web) năm 2019

3.2.Cách tấn công và phòng tránh SQL Injection

Tùy vào mức độ tinh vi, SQL Injection có thể cho phép kẻ tấn công:

● Vượt qua các khâu xác thực người dùng

● Chèn, xóa hoặc sửa đổi dữ liệu

● Đánh cắp các thông tin trong CSDL

● Chiếm quyền điều khiển hệ thống

Cách thức tấn công của SQL Injection thông thường nhất gồm: vượt qua kiểm tra đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored procedures.

Dạng tấn công vượt qua kiểm tra đăng nhập

Với dạng tấn công này, kẻ tấn công có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp Ví dụ như với một form login như dưới đây Thử submit các field username, password hoặc field id, bằng hi' or 1=1 Nếu thành công, thì có thể login vào mà không cần phải biết username và password.

Hình 3.22 SQL Injection vượt qua đăng nhập

- Nhập vào ô email với nội dụng: Abc123' OR 1 = 1 LIMIT 1 ' ]

- Nhập vào ô password với nội dụng bất kỳ, sau đó click vào nút Login.

Chúng ta có thể đăng nhập thành công Nguyên nhân chúng ta có thể dễ dàng đăng nhập vào hệ thống mà thậm chí chúng ta không có thông tin đăng nhập là vì khi đăng nhập hệ thống, chương trình sẽ tự động tạo ra cậu lệnh truy vấn dữ liệu với tham số được truyền vào từ form login:

$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='$taikhoan' AND

Với dữ liệu chúng ta vừa nhập, câu lệnh truy vấn sẽ là:

$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 ' ]' AND MatKhau='$matkhau'";

Sau kí tự “–“, hệ thống sẽ hiểu đó là comment, chương trình sẽ không thực thi những gì phía sau nó Câu truy vấn có thể rút gọn lại:

$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 Điều kiện của câu lệnh truy vấn: TaiKhoan= Abc123' OR 1 = 1, nó luôn là true, ' đó là lý do vì sao chúng ta có thể vượt qua màn hình đăng nhập một cách dễ dàng Ví dụ này mô tả cho dạng tấn công vượt qua kiểm tra lúc đăng nhập.

Dạng tấn công sử dụng câu lệnh SELECT

Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công Chúng ta có tể gặp các website tin tức có các tham số được truyền vào như: index.php?id! , index.asp?id=6, thì chúng ta chỉ cần thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không hiện ra 1 cái gì (khác hoàn toàn với lúc ban đầu thì 90% có khả năng khai thác được lỗi này) Ví dụ http://www.ampak.com.tw/product.php?id" là một website bị lỗi SQL Injection thì chúng ta sẽ thử với http://www.ampak.com.tw/product.php?id"' hoặc http://www.ampak.com.tw/product.php?id"' thì đều trả về trang lỗi Trong các tình huống thông thường, URL hiển thị nội dung của tin có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó bắt đầu cho một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR 1=1 (nghĩa là http://www.ampak.com.tw/product.php? id=0 or 1=1) Câu truy vấn SQL lúc này sẽ không trả về trang lỗi mặc dù chúng ta không có sản phẩm nào có ID = 0, vì nó sẽ thực hiện câu lệnh:

SELECT * FROM Products WHERE Product_ID=0 or 1=1

Tương tự như trên, kẻ tấn công có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập thêm lệnh tiếp theo: DROP TABLE users Lúc này, chương trình sẽ chạy câu truy vấn thực hiện việc xóa bảng users.

● Dạng tấn công sử dụng câu lệnh INSERT

Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:INSERT INTO TableName VALUES('1st Value', '2nd Value', '3rd Value') Thì chắc chắn sẽ bị lỗi Sql Injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như: ' + (SELECT TOP 1 FieldName FROM TableName) + ' Lúc này câu truy vấn sẽ là:

INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')

Khi đó, lúc thực hiện lệnh xem thông tin, xem như chúng ta đã yêu cầu thực hiện thêm một lệnh nữa đó là:

SELECT TOP 1 FieldName FROM TableName

● Dạng tấn công sử dụng stored-procedures

Stored Procedure được sử dụng trong lập trình web với mục đích nhằm giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kỹ thuật SQL Injection Tuy nhiên những kẻ tấn công vẫn có thể lợi dụng những stored procedure để tấn công vào hệ thống Việc tấn công này sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống ‘sa’ Ví dụ 1: stored procedure splogin gồm hai tham số là username và password, nếu kẻ tấn công nhập: Username: thanhcong, Password: ' ; shutdown- -

Lệnh gọi stored procedure như sau: EXEC splogin 'thanhcong','';shutdown- -' Lệnh shutdown thực hiện dừng sql server ngay lập tức Ví dụ 2: Hoặc EXEC xp_cmdshell

'cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.

● Luôn kiểm tra kỹ các trường nhập dữ liệu và các bạn cần ràng buộc thật kỹ dữ liệu người dùng nhập vào.

Cách tấn công và phòng tránh SQL Injection

Tùy vào mức độ tinh vi, SQL Injection có thể cho phép kẻ tấn công:

● Vượt qua các khâu xác thực người dùng

● Chèn, xóa hoặc sửa đổi dữ liệu

● Đánh cắp các thông tin trong CSDL

● Chiếm quyền điều khiển hệ thống

Cách thức tấn công của SQL Injection thông thường nhất gồm: vượt qua kiểm tra đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored procedures.

Dạng tấn công vượt qua kiểm tra đăng nhập

Với dạng tấn công này, kẻ tấn công có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp Ví dụ như với một form login như dưới đây Thử submit các field username, password hoặc field id, bằng hi' or 1=1 Nếu thành công, thì có thể login vào mà không cần phải biết username và password.

Hình 3.22 SQL Injection vượt qua đăng nhập

- Nhập vào ô email với nội dụng: Abc123' OR 1 = 1 LIMIT 1 ' ]

- Nhập vào ô password với nội dụng bất kỳ, sau đó click vào nút Login.

Chúng ta có thể đăng nhập thành công Nguyên nhân chúng ta có thể dễ dàng đăng nhập vào hệ thống mà thậm chí chúng ta không có thông tin đăng nhập là vì khi đăng nhập hệ thống, chương trình sẽ tự động tạo ra cậu lệnh truy vấn dữ liệu với tham số được truyền vào từ form login:

$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='$taikhoan' AND

Với dữ liệu chúng ta vừa nhập, câu lệnh truy vấn sẽ là:

$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 ' ]' AND MatKhau='$matkhau'";

Sau kí tự “–“, hệ thống sẽ hiểu đó là comment, chương trình sẽ không thực thi những gì phía sau nó Câu truy vấn có thể rút gọn lại:

$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 Điều kiện của câu lệnh truy vấn: TaiKhoan= Abc123' OR 1 = 1, nó luôn là true, ' đó là lý do vì sao chúng ta có thể vượt qua màn hình đăng nhập một cách dễ dàng Ví dụ này mô tả cho dạng tấn công vượt qua kiểm tra lúc đăng nhập.

Dạng tấn công sử dụng câu lệnh SELECT

Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công Chúng ta có tể gặp các website tin tức có các tham số được truyền vào như: index.php?id! , index.asp?id=6, thì chúng ta chỉ cần thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không hiện ra 1 cái gì (khác hoàn toàn với lúc ban đầu thì 90% có khả năng khai thác được lỗi này) Ví dụ http://www.ampak.com.tw/product.php?id" là một website bị lỗi SQL Injection thì chúng ta sẽ thử với http://www.ampak.com.tw/product.php?id"' hoặc http://www.ampak.com.tw/product.php?id"' thì đều trả về trang lỗi Trong các tình huống thông thường, URL hiển thị nội dung của tin có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó bắt đầu cho một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR 1=1 (nghĩa là http://www.ampak.com.tw/product.php? id=0 or 1=1) Câu truy vấn SQL lúc này sẽ không trả về trang lỗi mặc dù chúng ta không có sản phẩm nào có ID = 0, vì nó sẽ thực hiện câu lệnh:

SELECT * FROM Products WHERE Product_ID=0 or 1=1

Tương tự như trên, kẻ tấn công có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập thêm lệnh tiếp theo: DROP TABLE users Lúc này, chương trình sẽ chạy câu truy vấn thực hiện việc xóa bảng users.

● Dạng tấn công sử dụng câu lệnh INSERT

Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:INSERT INTO TableName VALUES('1st Value', '2nd Value', '3rd Value') Thì chắc chắn sẽ bị lỗi Sql Injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như: ' + (SELECT TOP 1 FieldName FROM TableName) + ' Lúc này câu truy vấn sẽ là:

INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')

Khi đó, lúc thực hiện lệnh xem thông tin, xem như chúng ta đã yêu cầu thực hiện thêm một lệnh nữa đó là:

SELECT TOP 1 FieldName FROM TableName

● Dạng tấn công sử dụng stored-procedures

Stored Procedure được sử dụng trong lập trình web với mục đích nhằm giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kỹ thuật SQL Injection Tuy nhiên những kẻ tấn công vẫn có thể lợi dụng những stored procedure để tấn công vào hệ thống Việc tấn công này sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống ‘sa’ Ví dụ 1: stored procedure splogin gồm hai tham số là username và password, nếu kẻ tấn công nhập: Username: thanhcong, Password: ' ; shutdown- -

Lệnh gọi stored procedure như sau: EXEC splogin 'thanhcong','';shutdown- -' Lệnh shutdown thực hiện dừng sql server ngay lập tức Ví dụ 2: Hoặc EXEC xp_cmdshell

'cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.

● Luôn kiểm tra kỹ các trường nhập dữ liệu và các bạn cần ràng buộc thật kỹ dữ liệu người dùng nhập vào.

● Dùng các hàm có sẵn để giảm thiểu lỗi Mỗi khi truy vấn thì mọi người nên sử dụng thêm hàm“ mysqli_real_escape_string” để chuyển đổi một chuỗi thành một query an toàn.

● Chúng ta nên dùng các Framework và hạn chế dùng code thuần tối đa nếu có thể Framework luôn có cộng đồng hoặc các chuyên gia bảo mật giúp tìm lỗi và update liên tục, từ đó chúng ta có thể giảm bớt thời gian xử lý lỗi để tăng thời gian làm sản phẩm cũng là một điều hay.

Áp dụng vào hệ thống

$taikhoan = mysqli_escape_string($db-> conn, $taikhoan);

$matkhau = mysqli_escape_string($db-> conn, $matkhau);

Sử dụng lệnh mysqli_escape_string để xóa các kí tự đặc biệt và trả về string, ngăn chặn việc sử dụng các kí tự trong lệnh truy vấn khi đăng nhập.

$value_list = “,’” mysqli_escape_string($this-> conn, $value) “’”; foreach ($data as $key => $value) {

$sql = “$key” = ‘” mysqli_escape_string($this-> conn, $value) “’,”; }

Sử dụng lệnh mysqli_escape_string để trả về string khi thêm/ thay đổi thông tin, ngăn chặn việc chèn thêm câu lệnh SQL.

SẢN PHẨM THỰC NGHIỆM

Trang chủ

Hình 4.23 Giao diện trang chủ

Trang chủ “Index.php”: Là trang chính, chứa tất cả các mục để lựa chọn Từ trang chủ khách hàng có thể tìm thấy mọi thông tin cần thiết:

- Thông tin về các loại sản phẩm với giao diện gần gũi, thân thiện và dễ sử dụng từ đó khách hàng có thể đặt mua cho mình những sản phẩm yêu thích, phù hợp với nhu cầu khách hàng

- Xem những bài viết, tin tức mới về những sản phẩm

- Xem thông tin tuyển dụng

- Xem thông tin giới thiệu trang web

- Bạn có thể gửi những thắc mắc, góp ý hoặc liên hệ với quản trị viên

Đăng nhập, đăng ký tài khoản người dùng

4.2.1 Giao diện form đăng nhập

Hình 4.24 Giao diện form đăng nhập

Trong trang chủ khách hàng ấn vào tài khoản để nhập Tên đăng nhập và Mật khẩu của mình để đăng nhập vào website, nếu chưa có tài khoản khách hàng nhấn vào nút Đăng ký để tạo cho mình một tài khoản mới

4.2.2 Giao diện form đăng ký

Hình 4.25 Giao diện form đăng ký

Trong form đăng ký khách hàng phải nhập đầy đủ thông tin cần thiết để có thể tạo một tài khoản mới đăng nhập website

Quá trình mua hàng

Hình 4.26 Giao diện giỏ hàng

Trang giỏ hàng là trang mà khách hàng có thể xem được những sản phẩm của mình đã chọn Tại đây khách hàng có thể biết được số lượng mặt hàng mình đã chọn cũng như tổng số tiền phải thanh toán Khách hàng có thể thêm, cập nhập cũng như xóa sản phẩm ngay tại giỏ hàng.

4.3.2 Giao diện trang chi tiết sản phẩm

Hình 4.27 Giao diện trang chi tiết sản phẩm

Trang chi tiết sản phẩm là trang hiển thị thông tin chi tiết về sản phẩm: giá, bảo hành, thông số kỹ thuật…giúp cho khách hàng có cái nhìn tổng quan về sản phẩm Là cơ sở để khách hàng có quyết định mua sản phẩm hay không

Quản trị

Hình 4.28 Giao diện form đăng nhập admin

Trang đăng nhập Admin để khi có người muốn vào trang quản lý thì cần phải đăng nhập mới quản lý được.

Hình 4.29 Giao diện trang quản lý sản phẩm

Sau khi đăng nhập được vào giao diện trang quản lý sản phẩm thì Admin có thể thêm, sửa, xóa sản phẩm

Hình 4.30 Giao diện trang quản lý đơn hàng

Giao diện trang quản lý đơn hàng khi khách hàng gửi đơn hàng thì nó sẽ được hiển thị và Admin sẽ xử lý đơn hàng này.

Hình 4.31 Giao diện trang quản lý khách hàng

Giao diện trang quản lý khách hàng sẽ cho người quản lý thêm, xóa và phân quyền cho khách hàng.

1.1.4 Thống kê sản phẩm bán ra

Hình 4.32 Giao diện trang thống kê sản phẩm bán ra

Giao diện trang thống kê sản phẩm bán ra sẽ cho người quản lý biết thêm về số lượng và so sánh những loại sản phẩm được bán ra.

Ngày đăng: 11/06/2024, 22:18

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Tham khảo về HTML: https://www.w3schools.com/html/ Link
2. Tham khảo về CSS: https://www.w3schools.com/css/ Link
3. Tham khảo về Javascript: https://www.w3schools.com/js/ Link
4. Tham khảo về cơ sở dữ liệu MYSQL: https://www.mysql.com/ Link
5. Tham khảo về SQL Injection: https://viblo.asia/p/sql-injection-6J3Zg2EMKmB Link

HÌNH ẢNH LIÊN QUAN

Bảng 1.1 So sánh Java và JavaScript Phân biệt ngôn ngữ lập trình JavaScript và các ngôn ngữ lập trình khác - đồ án môn học xây dựng website bán hàng tích hợp chống tấn công sql injection
Bảng 1.1 So sánh Java và JavaScript Phân biệt ngôn ngữ lập trình JavaScript và các ngôn ngữ lập trình khác (Trang 13)
Bảng hoadon - đồ án môn học xây dựng website bán hàng tích hợp chống tấn công sql injection
Bảng hoadon (Trang 38)
Bảng 2.20 Bảng khuyenmai Bảng nguoidung - đồ án môn học xây dựng website bán hàng tích hợp chống tấn công sql injection
Bảng 2.20 Bảng khuyenmai Bảng nguoidung (Trang 39)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w