#import "template.typ": *

#h1("Khảo sát và phân tích các yêu cầu của một website thương mại điện tử (TMĐT)")

#h2("Tổng quan về thương mại điện tử")

Thương mại điện tử (TMĐT) hiểu một cách đơn giản là hoạt động mua bán sản phẩm hay dịch vụ thông qua Internet và các phương tiện điện tử khác. Các giao dịch này gồm tất cả hoạt động như: mua bán, thanh toán, đặt hàng, quảng cáo và giao hàng ... Có nhiều tổ chức lớn trên thế giới đưa ra các định nghĩa khác nhau cho khái niệm của TMĐT.

Theo Ủy ban Kinh tế Liên Hiệp Quốc châu Âu (UNECE): "TMĐT nội địa bao gồm các giao dịch trong nước qua Internet hoặc các mạng máy tính trung gian, trong khi đó, TMĐT quốc tế liên quan đến các giao dịch xuyên biên giới. Các giao dịch này là giao dịch mua/bán hàng hóa hoặc dịch vụ, sau đó, quá trình chuyển giao hàng hóa có thể được thực hiện trực tuyến hoặc thủ công”.

Theo Tổ chức Thương mại Thế giới (WTO): "TMĐT bao gồm việc sản xuất, quảng cáo, bán hàng và phân phối sản phẩm được mua bán và thanh toán trên mạng Internet, nhưng được giao nhận một cách hữu hình, cả các sản phẩm giao nhận cũng như những thông tin số hoá thông qua mạng Internet".

Ngày nay ngươì ta còn hiểu khái niệm TMĐT thông thường là tất cả các phương pháp tiến hánh kinh doanh và các quy trình quản trị thông qua các kêng điện tử mà trong đó internet đóng vai trò cơ bản và trong công nghệ thông tin được gọi là điều kiện tiên quyết.

Tuy nhiên, TMĐT không chỉ là kinh doanh sử dụng công nghệ. TMĐT là toàn bộ quá trình kinh doanh được thực hiện bằng điện tử và được thiết kế để giúp hoàn thành mục tiêu kinh doanh. 
Hai công nghệ chủ chốt để xây dựng và phát triển TMĐT là trao đổi dữ liệu điện tử (EDI) và chuyển tiền điện tử (EFT). Ngày nay, công nghệ chuyển tiền điện tử được ứng dụng để xây dựng các hệ thống thanh toán điện tử.

Website TMĐT là một nền tảng trực tuyến cho phép các doanh nghiệp bán hàng hoặc dịch vụ của mình cho khách hàng thông qua internet. TMĐT cung cấp một kênh bán hàng trực tuyến, mở rộng phạm vi tiếp cận của doanh nghiệp đến toàn bộ thị trường và giúp tăng thu nhập.

#h3("Các đặc trưng cơ bản của TMĐT")

So với các hoạt động thương mại truyền thống, TMĐT có một số các đặc trưng cơ bản sau:

- Truy cập từ xa.
- Thanh toán trực tuyến.
- Mở cửa 24/7.
- Phạm vi rộng.
- Tiết kiệm chi phí.
- Đa dạng sản phẩm.
- Trải nghiệm người dùng tốt.

#h3("Lợi ích của một trang TMĐT")

Website TMĐT mang lại nhiều lợi ích cho các doanh nghiệp và khách hàng, bao gồm:

- Mở rộng phạm vi tiếp cận khách hàng.
- Tiết kiệm chi phí.
- Tăng doanh số bán hàng.
- Tăng tính minh bạch trong quản lý kinh doanh.
- Đáp ứng nhu cầu của khách hàng.
- Tăng tính tiện lợi cho khách hàng.
- Tiết kiệm thời gian.
- Hỗ trợ quản lý đơn hàng dễ dàng.

#h3("Các hệ thống thanh toán trong TMĐT")

Một số hình thức thanh toán điện tử được sử dụng rộng rãi trong các hệ thống thanh toán điện tử được trình bày dưới đây:

- Thanh toán bằng thẻ: Đây là hình thức thanh toán đặc trưng nhất, chiếm tới 90% trong tổng số các giao dịch thanh toán điện tử. Thẻ thanh toán (thẻ chi trả) là một loại thẻ có khả năng thanh toán tiền mua hàng hóa, dịch vụ tại một vài địa điểm, kể cả website mua hàng trực tuyến nếu chấp nhận tiêu dùng bằng thẻ đó. Thẻ có thể dùng để rút tiền mặt trực tiếp từ các ngân hàng hay các máy rút tiền tự động. 
- Thanh toán qua cổng thanh toán điện tử: Cổng thanh toán điện tử về bản chất là dịch vụ cho phép khách hàng giao dịch tại các website TMĐT. Cổng thanh toán cung cấp hệ thống kết nối an toàn giữa tài khoản (thẻ, ví điện tử,…) của khách hàng với tài khoản của website bán hàng. Cổng thanh toán điện tử giúp người tiêu dùng và doanh nghiệp thanh toán, nhận tiền trên internet đơn giản, nhanh chóng và an toàn. 
- Thanh toán bằng ví điện tử: Ví điện tử là một tài khoản online có thể dùng nhận, chuyển tiền, mua thẻ điện thoại, vé xem phim, thanh toán trực tuyến các loại phí trên internet như tiền điện nước, cước viễn thông, cũng có thể mua hàng online từ các trang TMĐT. Người dùng phải sở hữu thiết bị di động thông minh tích hợp ví điện tử và liên kết với ngân hàng thì mới có thể thanh toán trực tuyến bằng hình thức này. 
- Thanh toán qua Mobile Banking: Hình thức này đang dần trở nên phổ biến bởi hầu hết người dùng đều sử hữu một chiếc điện thoại thông minh. Chính vì vậy, khi đi mua sắm, khách hàng không cần phải mang theo tiền mặt, thay vào đó là thanh toán qua điện thoại với dịch vụ Mobile Banking. Hệ thống thanh toán qua điện thoại được xây dựng trên mô hình liên kết giữa ngân hàng, các nhà cung cấp viễn thông, và người dùng.
- Thanh toán qua QR Code: Tiến bộ công nghệ cũng là lý do khiến thanh toán bằng QR Code ngày càng được ưa chuộng. Phương thức thanh toán này khá đơn giản, gọn nhẹ, dễ sử dụng và thân thiện cho người dùng. Tính năng QR Code hiện đang được tích hợp sẵn trên ứng dụng di động của các ngân hàng, các sản phẩm và dịch vụ của Google như Google Chart hay Google Map, trên bảng hiệu, xe buýt, danh thiếp, tạp chí, website, hàng hóa tại siêu thị, cửa hàng tiện lợi,… Thậm chí là trên một số siêu ứng dụng như VinID của Tập đoàn Vingroup. Người dùng sử dụng camera điện thoại quét mã QR để thực hiện nhanh các giao dịch chuyển khoản, thanh toán hóa đơn, mua hàng. Chỉ với một lần quét, sau vài giây, người dùng đã thanh toán thành công tại các nhà hàng, siêu thị, cửa hàng tiện lợi, taxi, thậm chí là các website TMĐT hay trên bất cứ sản phẩm nào có gắn mã QR mà không cần sử dụng tiền mặt, thẻ, không lo lộ thông tin cá nhân tại các điểm thanh toán.

#h3("Quy trình thanh toán điện tử")

Các hệ thống thanh toán điện tử triển khai trong thực tế rất đa dạng về hình thức và công nghệ sử dụng.

#img("1image.png", cap: "Quy trình thanh toán điện tử")<imgxxx1>

Trong mô hình ở @imgxxx1, hệ thống thanh toán điện tử là trung gian kết nối giữa người mua, người bán, thực hiện thanh toán cho các giao dịch dựa trên kết nối với ngân hàng của người mua và người bán:

- Bước 1 - Thẻ tín dụng: Các khách hàng có thẻ tín dụng do ngân hàng phát hành với hạn mức tín dụng và số dư có sẵn.
- Bước 2 - Đặt hàng: Các khách hàng đến thăm một trang web hoặc cửa hàng trực tuyến sử dụng trình duyệt web tiêu chuẩn và bắt đầu mua sắm và thêm (các) sản phẩm vào giỏ hàng của mình. Sau khi kiểm tra, người mua được yêu cầu để gửi thông tin thẻ tín dụng của mình, ngày hết hạn, địa chỉ thanh toán. Sau đó, người mua cũng chọn phương thức vận chuyển cho ví dụ và sau đó nhấn vào nút gửi để bắt đầu giao dịch. Các thông tin này sau đó được chuyển đến cửa hàng trực tuyến của thương gia nơi mà các dịch vụ thanh toán bên ngoài được thiết lập. Các dịch vụ thanh toán bên ngoài nhận được thông tin được mã hóa từ các cửa hàng trực tuyến, thực hiện một kiểm tra gian lận, và sau đó bắt đầu quá trình giao tiếp thông tin thanh toán và số tiền mua hàng cho các bộ xử lý của bên thứ ba.
- Bước 3 - Yêu cầu xác nhận: Dịch vụ dịch thanh toán mã hóa thông tin mua hàng hoặc dữ liệu và truyền nó cho các bộ xử lý của bên thứ ba, người sẽ chuyển thông tin hoặc dữ liệu hơn nữa để các hiệp hội thẻ hoặc thẻ phát hành cho phép và xác minh
- Bước 4 - Đáp trả xác thực: Các tổ chức tài chính phát hành xác minh thông tin thẻ tín dụng và xác định xem khách hàng có đủ tín dụng để thanh toán tiền mua. Một số quyền được tạo ra và tín dụng là giảm lượng có thẩm quyền. Nếu nó để xảy ra rằng các thông tin thẻ tín dụng là không đúng hoặc nếu không có đủ tín dụng có sẵn, sau đó nhắn giảm giao dịch được tạo ra. Trong khoảng thời gian ngắn này của thời gian, các ngân hàng phát hành cũng thực hiện các hoạt động khác như dịch vụ xác minh địa chỉ, nơi các thông tin thanh toán đã nhập trực tuyến được so sánh với các mục trong cơ sở dữ liệu của ngân hàng phát hành - đây là phần xác thực. Sau đó, một thông báo uỷ quyền được trả lại cho các hiệp hội thẻ và chuyển tiếp đến các bộ xử lý của bên thứ ba.
- Bước 5 - Thông báo cho bên bán: Bộ xử lý của bên thứ ba nhận được tin nhắn uỷ quyền và các thông tin cần thiết khác từ các hiệp hội thẻ hoặc tổ chức phát hành và khởi tạo quá trình truyền đạt thông điệp uỷ quyền cho các thương gia. Các bộ vi xử lý của bên thứ ba mã hóa thông điệp uỷ quyền và truyền các thông tin mã hóa cho máy chủ thương mại an toàn của bên bán.
- Bước 6 - Thông báo từ bên bán: máy chủ của bên bán thu được các thông tin và được lập trình để gửi ngay cho chính người mua hoặc tin nhắn cho chủ thẻ/khách hàng. Thông thường khi thẻ tín dụng bị từ chối, một số thông tin cần thiết như một gợi ý để kiểm tra tính chính xác của các thông tin được cung cấp hoặc sử dụng một thẻ tín dụng khác để gửi lên. Ngay sau khi khách hàng nhận được thông tin này sẽ đồng ý chấp thuận một giao dịch, cùng một lúc nhận được một số xác nhận. Nó chỉ mất một vài giây từ thời điểm khách hàng nhấn vào nút mua cho đến khi khách hàng nhận được tin nhắn phản hồi trở lại. Các quá trình cấp phép thường mất một vài giây, tùy thuộc vào ứng dụng của bên bán thanh toán và thủ tục cũng như lưu lượng Internet và các yếu tố khác.
- Bước 7 - Hoàn thành: Bên bán bắt đầu quá trình thực hiện lệnh của khách hàng với các sản phẩm/dịch vụ thích hợp.
- Bước 8 - Yêu cầu giải quyết: Các bên bán biên soạn một loạt các đơn đặt hàng đã được hoàn thành và bắt đầu quá trình truyền tải hàng loạt các bộ xử lý của bên thứ ba để giải quyết. Bên bán đầu tiên truyền hàng loạt dịch vụ thanh toán của mình để mã hoá thông tin mua hàng và truyền các thông tin mã hóa cho các bộ vi xử lý của bên thứ ba. Các bộ xử lý của bên thứ ba nhận được thông tin này và sẽ gửi các hướng dẫn giải quyết cho tổ chức tài chính của mình để chuyển số tiền  từ tài khoản của chủ thẻ vào tài khoản của thương gia.
- Bước 9 - Giải quyết: Đối với mỗi giao dịch thẻ tín dụng trong hàng loạt, các tổ chức tài chính thích hợp được ghi nợ và thẻ tín dụng của chủ thẻ được cập nhật. Các ngân hàng bên mua nhận tiền và tiền được gửi vào tài khoản ngân hàng của bên bán.
- Bước 10 - Đáp ứng giải quyết: Bên bán nhận được thông báo rằng tiền đã được gửi vào tài khoản ngân hàng của mình. Trên cơ sở đó, các thương gia nhận được báo cáo rằng ông có thể sử dụng để hòa giải với yêu cầu giải quyết hàng loạt của mình với hoạt động tiền gửi của mình.
- Bước 11 - Quỹ có sẵn: Khoảng cách giữa các cấp của thương gia được yêu cầu thanh toán, chuyển tiền và các quỹ sẵn có thể mất đến vài ngày, tùy thuộc vào các ngân hàng phát hành, các ngân hàng mua lại và các bộ xử lý của bên thứ ba. Chu kỳ thời gian giải quyết là thực sự bị ảnh hưởng bởi thời gian nắm giữ ngân hàng mua lại tiền gửi, cũng như các thủ tục khác và chính sách được thiết lập bởi các ngân hàng mua lại và xử lý của bên thứ ba.

#h2("Mô tả bài toán xây dựng website TMĐT")

Công ty ABC kinh doanh về lĩnh vực may mặc muốn xây dựng hệ thống website TMĐT với các yêu cầu:

- Đăng ký và đăng nhập: Người dùng có thể đăng ký tài khoản mới và đăng nhập vào hệ thống. Đăng ký tài khoản dễ dàng.
- Xem sản phẩm: Người dùng có thể xem thông tin chi tiết về các sản phẩm đang được bán trên website.
- Thêm sản phẩm vào giỏ hàng: Người dùng có thể thêm sản phẩm vào giỏ hàng của mình.
- Quản lý giỏ hàng: Người dùng có thể chỉnh sửa số lượng sản phẩm trong giỏ hàng, xóa sản phẩm khỏi giỏ hàng, hoặc xem tổng giá trị đơn hàng.
- Đặt hàng: Người dùng có thể đặt hàng bằng cách cung cấp thông tin về địa chỉ giao hàng, phương thức thanh toán và các chi tiết khác liên quan đến đơn hàng.
- Theo dõi đơn hàng: Người dùng có thể theo dõi trạng thái và thông tin liên quan đến đơn hàng đã đặt.
- Thanh toán: Người dùng có thể chọn phương thức thanh toán và thực hiện thanh toán cho đơn hàng. Tích hợp nhiều dịch vụ thanh toán.
- Giao hàng: Website hỗ trợ các nhà cung cấp dịch vụ giao hàng để vận chuyển các đơn hàng đến địa chỉ giao hàng của người dùng.
- Quản lý người dùng: Website cho phép quản lý thông tin người dùng, bao gồm cập nhật thông tin cá nhân và quản lý địa chỉ giao hàng.
- Quản lý sản phẩm: Website cho phép quản lý thông tin về sản phẩm, bao gồm thêm, sửa, xóa và hiển thị sản phẩm.
- Quản lý đơn hàng: Website cho phép quản lý thông tin về các đơn hàng, bao gồm xem danh sách đơn hàng, cập nhật trạng thái và xem chi tiết từng đơn hàng.
- Giao diện quản lý đơn giản dễ sử dụng, giao diện người dùng dễ nhìn, đặt hàng nhanh chóng.
- Đảm bảo an toàn và bảo mật cho dữ liệu.
- Đảm bảo an toàn cho tính năng thanh toán đơn hàng.

#h2("Khảo sát các nghiệp vụ của một website TMĐT")

Một website thương mại điện tử có thể có nhiều nghiệp vụ khác nhau, nhưng dưới đây là một số nghiệp vụ quan trọng và phổ biến mà một website thương mại điện tử thường thực hiện:

- Quản lý sản phẩm: Nghiệp vụ này liên quan đến việc quản lý thông tin về các sản phẩm được bán trên website. Bao gồm việc thêm, sửa, xóa sản phẩm, cập nhật thông tin sản phẩm, quản lý danh mục sản phẩm, hình ảnh, mô tả, giá cả và số lượng hàng tồn kho.
- Quản lý đơn hàng: Nghiệp vụ này bao gồm quản lý quá trình đặt hàng từ khách hàng, xử lý đơn hàng, lưu trữ thông tin đơn hàng, cập nhật trạng thái đơn hàng (đã xác nhận, đang vận chuyển, đã giao hàng, hủy đơn hàng, v.v.), cung cấp thông tin vận chuyển và theo dõi đơn hàng.
- Thanh toán và giao dịch: Nghiệp vụ này liên quan đến việc xử lý thanh toán trực tuyến và giao dịch với khách hàng. Bao gồm tích hợp các cổng thanh toán, cung cấp các phương thức thanh toán an toàn và tiện lợi (thẻ tín dụng, chuyển khoản ngân hàng, ví điện tử, v.v.), xử lý giao dịch thành công và cung cấp thông tin về giao dịch cho khách hàng và nhà cung cấp.
- Quản lý tài khoản khách hàng: Nghiệp vụ này liên quan đến quản lý thông tin cá nhân của khách hàng, bao gồm việc đăng ký tài khoản, đăng nhập, cập nhật thông tin cá nhân, quản lý địa chỉ giao hàng và thông tin thanh toán, theo dõi lịch sử mua hàng và đánh giá sản phẩm.
- Quảng cáo và khuyến mãi: Nghiệp vụ này liên quan đến việc quảng bá sản phẩm và dịch vụ của website, thiết kế và triển khai các chiến dịch quảng cáo, cung cấp mã giảm giá, khuyến mãi và chương trình thưởng cho khách hàng, theo dõi hiệu quả quảng cáo và khuyến mãi.
- Tương tác khách hàng: Nghiệp vụ này liên quan đến việc tương tác với khách hàng qua các kênh như email, chat trực tuyến, điện thoại hoặc mạng xã hội. Bao gồm hỗ trợ khách hàng, giải đáp thắc mắc, xử lý khiếu nại và cung cấp hỗ trợ sau bán hàng.
- Quản lý kho hàng: Nghiệp vụ này liên quan đến việc quản lý và kiểm soát hàng tồn kho, cập nhật số lượng hàng hóa có sẵn, quản lý nhập xuất kho, tổ chức vận chuyển và lưu trữ thông tin về kho hàng.
- Phân tích dữ liệu và báo cáo: Nghiệp vụ này liên quan đến việc thu thập, phân tích và báo cáo dữ liệu về hoạt động kinh doanh của website thương mại điện tử. Bao gồm thông tin về lượt truy cập, doanh số bán hàng, hành vi khách hàng, hiệu quả quảng cáo và khuyến mãi, v.v. để đưa ra quyết định kinh doanh và cải thiện hiệu suất.

Những nghiệp vụ trên chỉ là một phần trong tổng thể của một website thương mại điện tử, và còn nhiều nghiệp vụ khác như quản lý đánh giá và nhận xét sản phẩm, tích hợp công cụ tìm kiếm, xây dựng cộng đồng khách hàng, v.v. Tùy thuộc vào quy mô và phạm vi của website, các nghiệp vụ có thể được điều chỉnh và mở rộng để phù hợp với yêu cầu và mục tiêu kinh doanh của doanh nghiệp.

#h2("Các yêu cầu chức năng của một website TMĐT")

Một website thương mại điện tử cần phải đáp ứng một số yêu cầu chức năng để cung cấp trải nghiệm mua sắm trực tuyến thuận tiện, hiệu quả cho người dùng và cung cấp công cụ quản lý và phát triển hiệu quả cho người bán. Dưới đây là một số yêu cầu chức năng quan trọng của một website TMĐT:

- Đăng ký và đăng nhập: Cho phép người dùng đăng ký tài khoản mới, cung cấp thông tin cá nhân cần thiết và đăng nhập vào tài khoản đã đăng ký để tiếp tục quá trình mua sắm.
- Tìm kiếm và duyệt sản phẩm: Cung cấp chức năng tìm kiếm để người dùng có thể tìm kiếm sản phẩm theo từ khóa, danh mục, giá cả, thương hiệu, v.v. Đồng thời, cung cấp khả năng duyệt sản phẩm theo danh mục, thương hiệu, sản phẩm mới nhất, sản phẩm bán chạy, v.v.
- Chi tiết sản phẩm: Cung cấp thông tin chi tiết về sản phẩm bao gồm hình ảnh, mô tả, thông số kỹ thuật, giá cả, đánh giá và nhận xét từ người dùng khác.
- Giỏ hàng và thanh toán: Cho phép người dùng thêm sản phẩm vào giỏ hàng, cập nhật số lượng sản phẩm, tính tổng giá trị đơn hàng, chọn phương thức thanh toán và cung cấp thông tin thanh toán cần thiết để hoàn tất quá trình mua hàng.
- Quản lý đơn hàng: Cung cấp chức năng cho người dùng theo dõi và quản lý đơn hàng, bao gồm xem trạng thái đơn hàng, lịch sử đơn hàng, in hóa đơn và yêu cầu hỗ trợ sau bán hàng.
- Quản lý tài khoản: Cho phép người dùng cập nhật thông tin cá nhân, địa chỉ giao hàng, thông tin thanh toán và thay đổi mật khẩu.
- Đánh giá và nhận xét: Cho phép người dùng đánh giá và viết nhận xét về sản phẩm đã mua để chia sẻ kinh nghiệm và đánh giá với người dùng khác.
- Quản lý khuyến mãi và mã giảm giá: Cung cấp chức năng quản lý các chương trình khuyến mãi, mã giảm giá và ưu đãi đặc biệt, cho phép người dùng áp dụng mã giảm giá khi thanh toán.
- Giao hàng và vận chuyển: Cung cấp thông tin về phương thức giao hàng, thời gian giao hàng dự kiến và tính phí vận chuyển. Cho phép người dùng chọn phương thức giao hàng và cập nhật địa chỉ giao hàng.
-  Hỗ trợ khách hàng: Cung cấp kênh liên hệ và hỗ trợ khách hàng trực tuyến để giải đáp thắc mắc, xử lý khiếu nại và cung cấp hỗ trợ sau bán hàng.
- Tích hợp thanh toán trực tuyến: Hỗ trợ các phương thức thanh toán trực tuyến an toàn và thuận tiện như thẻ tín dụng, chuyển khoản ngân hàng, ví điện tử, v.v.
- Quản lý báo cáo và thống kê: Cung cấp chức năng phân tích dữ liệu và báo cáo về doanh số bán hàng, lượt truy cập, đánh giá sản phẩm, v.v. để giúp doanh nghiệp đánh giá hiệu suất kinh doanh và đưa ra quyết định phát triển.

Những yêu cầu chức năng này sẽ tùy thuộc vào quy mô và mục tiêu kinh doanh của mỗi website thương mại điện tử. Việc phân tích và đáp ứng đúng các yêu cầu chức năng sẽ giúp đảm bảo trải nghiệm mua sắm tốt nhất cho người dùng và nâng cao hiệu quả kinh doanh của doanh nghiệp.

#h2("Khảo sát, phân tích các yêu cầu an toàn của một website TMĐT")

#h3("Các lỗ hổng an toàn phổ biến trong website TMĐT")

OWASP (Open Web Application Security Project) là một tổ chức phi lợi nhuận quốc tế tập trung vào việc nghiên cứu và phân tích các vấn đề về bảo mật ứng dụng web. OWASP cung cấp nhiều tài liệu, công cụ và khóa học để giúp các nhà phát triển phát hiện và khắc phục các lỗ hổng bảo mật trong ứng dụng web.

OWASP cũng tạo ra danh sách "OWASP Top 10" để tập trung vào 10 lỗ hổng bảo mật phổ biến nhất trong ứng dụng web. Danh sách này được cập nhật định kỳ và dùng làm hướng dẫn cho việc phát triển ứng dụng an toàn. Các phiên bản của OWASP Top 10 từng được phát hành vào các năm khác nhau và được điều chỉnh để phản ánh các mối đe dọa bảo mật mới nhất.

Theo tổ chức OWASP, 10 lỗ hổng ứng dụng web phổ biến nhất hiện nay bao gồm: @owasp-top-10

- Broken Access Control
- Cryptographic Failures
- Injection
- Insecure Design (Lỗ hổng mới cập nhật)
- Security Misconfiguration
- Vulnerable and Outdated Components
- Identification and Authentication Failures
- Software and Data Integrity Failures (Lỗ hổng mới cập nhật)
- Security Logging and Monitoring Failures
- Server-Side Request Forgery (SSRF) (Lỗ hổng mới cập nhật)

#img("2image.png", cap: "Danh sách lỗ hổng Top 10 OWASP 2021", width: 80%)

OWASP Top 10 được cập nhật lại sau một khoảng thời gian tương đối, tùy thuộc vào sự phát triển và xu hướng của các lỗ hổng bảo mật trong ứng dụng web. Thông thường, OWASP Top 10 được cập nhật mỗi 3 - 4 năm. Danh sách OWASP Top 10 trước đây đã có các phiên bản cho các năm 2003, 2004, 2007, 2010, 2013 và 2017.

#h4("Lỗ hổng Broken Access Control")

Kiểm soát truy cập là sự kiểm soát người dùng không cho phép họ thực thi những hành động bên ngoài quyền hạn. Các lỗi thường dẫn đến tiết lộ thông tin trái phép, sửa đổi hoặc phá hủy tất cả dữ liệu hoặc thực hiện chức năng ngoài giới hạn của người dùng.

Các phương pháp phổ biến:

- Sửa đổi URL.
- Sửa đổi thông tin nhận dạng để truy cập tài khoản người khác (IDOR).
- Leo thang đặc quyền.

Biện pháp phòng chống:

- Ngoại trừ tài nguyên công cộng, còn lại từ chối theo mặc định.
- Xác thực người dùng khi học quay lại ứng dụng.
- Kiểm tra quyền tại thời điểm người dùng cố gắng thực hiện hành động.

Ví dụ: Kẻ tấn công chỉ cần buộc các trình duyệt đến các URL mục tiêu. Quyền quản trị được yêu cầu để truy cập vào trang quản trị: `https://example.com/app/getappInfo` => `https://example.com/app/admin`.

#h4("Lỗ hổng Cryptographic Failures")

Bảo mật thông tin nhạy cảm bằng cách mã hóa thông tin theo các cách khác nhau, nhưng nếu cách mã hóa đó kẻ tấn công có thể giải mã được hay là cách thức giải mã không đảm bảo an toàn bản rõ thì những thông tin nhạy cảm đó sẽ bị rò rỉ ra ngoài.

Các phương pháp phổ biến:

- Sử dụng những giao thức truyền dữ liệu dạng rõ như HTTP, FTP,...
- Sử dụng những mã hóa đã cũ hoặc yếu.
- Sử dụng những hàm băm không dùng nữa như MD5, SHA1.
- Khóa bí mật dễ đoán.
- Chuỗi mã hóa không được xác thực.

Biện pháp phòng chống:

- Không sử dụng những giao thức đã cũ như FTP, SMTP,... để vận chuyển dữ liệu nhạy cảm.
- Đảm bảo các thuật toán mã hóa đạt tiêu chuẩn mạnh mẽ.
- Mã hóa dữ liệu trên đường truyền bằng TLS, HTTPS.
- Lưu trữ password bằng các hàm băm mạnh như Argon2, scrypt, bcrypt,...
- Luôn sử dụng mã hóa được xác thực thay vì chỉ mã hóa.

Ví dụ: Một trang web không sử dụng TLS cho tất cả các trang hoặc hỗ trợ mã hóa yếu. Kẻ tấn công giám sát lưu lượng mạng (như tại một mạng không dây không an toàn), hạ cấp các kết nối từ HTTPS xuống HTTP, chặn các yêu cầu và đánh cắp cookie phiên của người dùng. Sau đó, kẻ tấn công phát lại cookie này và chiếm quyền điều khiển phiên của người dùng, truy cập hoặc sửa đổi dữ liệu cá nhân của người dùng. Thay vì những điều trên, họ có thể thay đổi tất cả dữ liệu được vận chuyển, ví dụ như người nhận chuyển tiền.

#h4("Lỗ hổng SQL Injection")

Lỗi bảo mật SQL Injection là một trong những lỗi phổ biến nhất trong các website TMĐT. Đây là lỗi bảo mật cho phép kẻ tấn công thực hiện các cuộc tấn công vào cơ sở dữ liệu của trang web bằng cách chèn các câu lệnh SQL độc hại vào các trường đầu vào trên trang web.

Khi khai thác lỗi SQL Injection, kẻ tấn công có thể truy xuất và thay đổi dữ liệu trong cơ sở dữ liệu của trang web, thực hiện các hoạt động xóa hoặc thêm mới dữ liệu, và thậm chí kiểm soát toàn bộ trang web.
            
Với những biện pháp trên, trang web TMĐT sẽ giảm thiểu được rủi ro bị tấn công SQL Injection và đảm bảo an toàn cho khách hàng trong quá trình giao dịch mua bán sản phẩm trên trang web.

Ví dụ, trong một hệ thống với 1000 đầu vào, lọc thành công 999 đầu vào là không đủ vì điều này vẫn để lại một phần giống như "gót chân Asin", có thể phá hoại hệ thống bất cứ lúc nào. Ta có thể cho rằng đưa kết quả truy vấn SQL vào truy vấn khác là một ý tưởng hay vì cơ sở dữ liệu là đáng tin cậy. Nhưng thật không may vì đầu vào có thể gián tiếp đến từ những kẻ có ý đồ xấu. Đây được gọi là lỗi Second Order SQL Injection.

Việc lọc dữ liệu khá khó vì thế nên sử dụng các chức năng lọc có sẵn trong framework. Các tính năng này đã được chứng minh sẽ thực hiện việc kiểm tra một cách kỹ lưỡng. Vì thế ta nên cân nhắc sử dụng các framework vì đây là một trong các cách hiệu quả để bảo vệ máy chủ.

#h4("Lỗ hổng Insecure Design (Thiết Kế Không An Toàn)")

Thiết kế an toàn là phân tích các giả định và điều kiện cho các dòng dự kiến đảm bảo chính xác, tránh trường hợp không mong muốn và có hành vi phù hợp với từng trường hợp. Đảm bảo kết quả được ghi lại trong nhật kí của người dùng. Học hỏi từ những sai lầm và đưa ra những cải tiến thích hợp.

Biện pháp phòng chống:

- Thiết lập sử dụng những thư viện mẫu thiết kế an toàn.
- Kiểm tra tính hợp lí ở mỗi cấp ứng dụng.
- Tách các lớp phần trên hệ thống và các lớp mạng.
- Hạn chế tiêu thụ tài nguyên người dùng hoặc dịch vụ.

Ví dụ: Một rạp chiếu phim cho phép đặt chỗ theo nhóm tối đa 15 người trước khi đặt tiền cọc, một kẻ tấn công có thể chạy lệnh để đặt tất cả các chỗ trong rạp sau đó dừng lại ở bước đặt cọc, gây tổn thất lớn về kinh tế.

#h4("Lỗ hổng Security Misconfiguration")

Nếu Insecure Design thuộc về phần thiết kế thì Security Misconfiguration thuộc về phần triển khai. Những lỗi phổ biến thường xảy ra:

- Các tính năng không cần thiết được bật như các port, service, account,...
- Thiếu việc tăng cường bảo mật cho từng phần của ứng dụng.
- Các tài khoản và mật khẩu vẫn để mặc định không thay đổi.
- Phần mềm đã lỗi thời.

Trong thực tế, máy chủ website và các ứng dụng đa số bị cấu hình sai. Có lẽ do một vài sai sót như:

- Chạy ứng dụng khi chế độ debug được bật.
- Directory listing.
- Sử dụng phần mềm lỗi thời (WordPress plugin, PhpMyAdmin cũ).
- Cài đặt các dịch vụ không cần thiết.
- Không thay đổi default key hoặc mật khẩu.
- Trả về lỗi xử lý thông tin cho kẻ tấn công lợi dụng để tấn công, chẳng hạn như stack traces.

Biện pháp phòng chống:

- Loại bỏ những tài nguyên, tính năng không cần thiết.
- Cung cấp sự hiệu quả và an toàn giữa các thành phần.
- Liên tục cập nhật những phiên bản mới nhất.

Ví dụ: Danh sách thư mục không bị tắt trên máy chủ. Kẻ tấn công phát hiện ra chúng có thể liệt kê các thư mục một cách đơn giản. Điều này có thể dẫn đến kẻ tấn công dịch ngược lại đoạn code và là tiềm ẩn rất lớn cho nhiều mối nguy hiểm khác.

#h3("Các yêu cầu an toàn của một website TMĐT")

Một website thương mại điện tử cần đáp ứng nhiều yêu cầu an toàn để bảo vệ thông tin cá nhân của người dùng và người bán, đảm bảo giao dịch an toàn và tránh các rủi ro liên quan đến bảo mật. Dưới đây là một số yêu cầu an toàn quan trọng của một website TMĐT: @buildwebapp

- Xác thực và quản lý truy cập: Cung cấp hệ thống xác thực đáng tin cậy để đảm bảo rằng chỉ người dùng hợp lệ mới có thể truy cập vào tài khoản và thông tin cá nhân. Đồng thời, quản lý quyền truy cập để giới hạn quyền truy cập chỉ cho những người được ủy quyền.
- Bảo vệ thông tin cá nhân: Đảm bảo rằng thông tin cá nhân của người dùng được bảo vệ an toàn và không bị truy cập, sử dụng hoặc tiết lộ trái phép. Áp dụng các biện pháp bảo mật như mã hóa dữ liệu, sử dụng giao thức an toàn (SSL/TLS) cho việc truyền tải thông tin và tuân thủ quy định về bảo vệ dữ liệu cá nhân.
- Bảo mật giao dịch: Đảm bảo rằng quá trình thanh toán và giao dịch trên website được bảo mật. Sử dụng giao thức mã hóa SSL/TLS để bảo vệ thông tin thanh toán, hạn chế lưu trữ thông tin thẻ tín dụng và áp dụng các biện pháp kiểm tra giao dịch an toàn như xác thực hai yếu tố (2FA).
- Quản lý mã độc và tấn công: Đảm bảo hệ thống website không bị tấn công bởi các loại mã độc, phần mềm độc hại và các cuộc tấn công mạng khác. Áp dụng các biện pháp bảo vệ bảo mật cơ bản như cập nhật hệ điều hành và phần mềm định kỳ, kiểm tra lỗ hổng bảo mật, sử dụng tường lửa (firewall), và các biện pháp phòng ngừa tấn công.
- Quản lý rủi ro liên quan đến dữ liệu: Đảm bảo rằng dữ liệu người dùng và dữ liệu liên quan đến giao dịch được lưu trữ, sao lưu và phục hồi một cách an toàn. Thực hiện các biện pháp bảo vệ dữ liệu như mã hóa dữ liệu, sao lưu định kỳ và đảm bảo tính toàn vẹn của dữ liệu.
- Quản lý lỗ hổng bảo mật: Thực hiện việc theo dõi, phát hiện và xử lý lỗ hổng bảo mật trong hệ thống website. Cập nhật và vá lỗi phần mềm định kỳ, thực hiện quản lý rủi ro bảo mật để ngăn chặn và giảm thiểu các mối đe dọa tiềm năng.
- Tuân thủ quy định pháp luật: Đảm bảo rằng website tuân thủ các quy định và quyền riêng tư liên quan đến bảo vệ thông tin cá nhân, bảo mật giao dịch và quyền lợi của người dùng. Điều này bao gồm việc tuân thủ các quy định như GDPR (Quy định chung về bảo vệ dữ liệu) và các quy định pháp luật liên quan đến thương mại điện tử.
- Giám sát và phản ứng sự cố: Thiết lập hệ thống giám sát liên tục để theo dõi các hoạt động bất thường và phản ứng kịp thời đối với các sự cố bảo mật. Đưa ra các biện pháp phòng ngừa và ứng phó sự cố để đảm bảo rằng website được bảo vệ một cách liên tục.

Những yêu cầu an toàn này đặc biệt quan trọng trong lĩnh vực thương mại điện tử, vì thông tin cá nhân và giao dịch của khách hàng là tài sản quý giá và phải được bảo vệ một cách tốt nhất. Sự tuân thủ và triển khai hiệu quả các yêu cầu an toàn này sẽ giúp xây dựng niềm tin và tăng cường sự thụ động của người dùng trong việc sử dụng website thương mại điện tử.

#h2("Kết chương")

Trong chương 1 đã tìm hiểu về TMĐT và website TMĐT, tìm hiểu các lỗi bảo mật phổ biến mới nhất hiện nay. Từ những phần tìm hiểu này cho thấy việc xây dựng 1 trang website TMĐT an toàn với doanh nghiệp cũng như khách hàng sử dụng là vô cùng quan trọng. Phần tiếp theo của đồ án sẽ nói về phân tích và thiết kế website TMĐT xây dựng dưa trên việc khảo sát và xác định yêu cầu ở Chương 1.
