Bối cảnh và vấn đề nghiên cứu

Đại dịch COVID-19 bùng phát đã tạo ra sự suy giảm đáng kể đối với các phương thức kinh doanh, thương mại và dịch vụ truyền thống do các biện pháp giãn cách, phong tỏa xã hội. Tuy nhiên, bối cảnh này đồng thời tạo động lực cho sự phát triển của thương mại điện tử nhờ tính tiện lợi trong việc tra cứu thông tin, so sánh giá cả và đặt hàng từ xa, điển hình là sự mở rộng của các sàn thương mại điện tử quy mô lớn như Shopee, Tiki và Lazada. Nắm bắt xu hướng tiêu dùng trực tuyến ngày càng gia tăng đối với các mặt hàng phục vụ đời sống tinh thần và không gian sống, đề tài "Xây dựng website bán cây sử dụng ASP.NET Core MVC" được thực hiện nhằm xây dựng nền tảng giao dịch trực tuyến chuyên biệt cho mặt hàng cây cảnh, góp phần thúc đẩy ứng dụng công nghệ trong kinh doanh.

Nhằm xác định rõ các yêu cầu chức năng thực tế, tác giả đã tiến hành khảo sát ba hệ thống website thương mại điện tử chuyên doanh cây cảnh tại Việt Nam, bao gồm: "Cây để bàn | cây văn phòng Locat", "Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam" và "9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất". Kết quả khảo sát cho thấy các website hiện hữu bộc lộ nhiều điểm hạn chế về mặt trải nghiệm người dùng và tính năng kỹ thuật:

Website khảo sát Nhược điểm được ghi nhận trong nghiên cứu
Locat Thanh điều hướng phân chia danh mục quá nhiều tầng; danh sách sản phẩm thiếu lượt bán và hiệu ứng tương tác; trang chi tiết chỉ có một hình ảnh duy nhất, thiếu lượt bán, điểm đánh giá và nhận xét chi tiết; quy trình mua hàng yêu cầu nhập quá nhiều thông tin và thiếu bộ chọn địa giới hành chính (phường/xã).
Cây Xinh Danh mục và trang chi tiết sản phẩm chưa hiển thị số lượng đã bán và điểm đánh giá sao; quy trình đặt hàng không có thanh chọn địa chỉ chi tiết (tỉnh/thành, quận/huyện, phường/xã); thiếu cơ chế tính phí vận chuyển tự động; chỉ hỗ trợ duy nhất hình thức thanh toán khi nhận hàng (COD).
9X Garden Giao diện tương đối trực quan nhưng danh sách sản phẩm vẫn thiếu lượt bán; trang đặt hàng yêu cầu điền nhiều trường thông tin; phí giao hàng bị cố định ở mức 40.000 VNĐ; chức năng thanh toán trực tuyến chỉ hiển thị thông tin tài khoản ngân hàng để người mua tự chuyển khoản thủ công, gây tốn thời gian xác minh đơn hàng.

Trên cơ sở khảo sát thực trạng, đề tài xác định 3 mục tiêu nghiên cứu cụ thể:

  1. Nghiên cứu, làm chủ và ứng dụng công nghệ ASP.NET Core MVC kết nối hệ quản trị cơ sở dữ liệu Microsoft SQL Server cùng các công cụ phụ trợ (Entity Framework, Identity Framework, LINQ).
  2. Xây dựng hoàn chỉnh website bán cây cảnh với các nhóm tính năng: hiển thị bài viết tin tức/kiến thức, hiển thị thông tin sản phẩm, giỏ hàng, thanh toán trực tuyến, quản lý danh sách khách hàng, quản lý danh mục và sản phẩm, quản lý tin tức, quản lý đơn hàng, quản lý đánh giá và hỗ trợ hiển thị đa ngôn ngữ.
  3. Nghiên cứu nguyên lý và triển khai các giải pháp ngăn chặn các lỗ hổng bảo mật ứng dụng web phổ biến.

Nhiệm vụ nghiên cứu được phân chia thành 2 phần: lý thuyết (tìm hiểu ASP.NET Core, Entity Framework, Identity Framework, LINQ, các kỹ thuật bảo mật web) và thực hành (xây dựng hệ thống backend phía server bằng ASP.NET Core, quản lý người dùng bằng Identity Framework, tương tác cơ sở dữ liệu bằng Entity Framework và LINQ, thiết kế giao diện phía máy khách).

  • Đối tượng nghiên cứu:
    • Khách hàng (người dùng cuối): nghiên cứu hành vi trải nghiệm mua sắm trực tuyến gồm tìm kiếm, xem thông tin cây cảnh, thao tác giỏ hàng, quy trình đặt hàng, thanh toán trực tuyến, theo dõi lịch sử đơn hàng và gửi đánh giá.
    • Quản trị viên: nghiên cứu quy trình nghiệp vụ quản trị hệ thống gồm quản lý tài khoản người dùng, phân quyền truy cập, quản lý danh mục, sản phẩm, tin tức, đơn hàng và phản hồi đánh giá.
  • Phạm vi nghiên cứu: Nền tảng framework ASP.NET Core MVC 5.0; hệ quản trị cơ sở dữ liệu Microsoft SQL Server; ngôn ngữ lập trình C# và JavaScript; các thư viện hỗ trợ Entity Framework và Identity Framework; thời gian thực hiện đồ án từ ngày 10/09/2023 đến ngày 01/01/2024 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.
  • Giới hạn đề tài: Hệ thống chưa tích hợp xác thực tài khoản qua Email hoặc tin nhắn SMS; chưa liên kết API của các đơn vị vận chuyển để tính cước phí tự động và theo dõi vị trí lộ trình đơn hàng theo thời gian thực; chưa hỗ trợ tải lên video trong tính năng đánh giá sản phẩm.

Cơ sở lý thuyết và phương pháp

Nghiên cứu được xây dựng trên nền tảng các lý thuyết kỹ thuật phần mềm và công nghệ web hiện đại của hệ sinh thái Microsoft:

  • Kiến trúc ASP.NET Core MVC: Ứng dụng mô hình Model-View-Controller nhằm phân tách rõ ràng trách nhiệm giữa ba thành phần:
    • Model: Đại diện cho dữ liệu nghiệp vụ và các quy tắc xử lý logic, bao gồm các lớp đối tượng thực thể và logic truy xuất cơ sở dữ liệu.
    • View: Đại diện cho giao diện người dùng, sử dụng cú pháp Razor để hiển thị dữ liệu từ Model và tiếp nhận tương tác của người dùng trên trình duyệt.
    • Controller: Tiếp nhận và phân tích các yêu cầu gửi đến (HTTP Requests), điều hướng luồng xử lý, tương tác với Model để lấy hoặc cập nhật dữ liệu, sau đó chuyển dữ liệu sang View tương ứng để phản hồi lại cho người dùng.
  • Hệ quản trị cơ sở dữ liệu Microsoft SQL Server: Sử dụng ngôn ngữ truy vấn Transact-SQL (T-SQL) cùng các dịch vụ cốt lõi: Database Engine lưu trữ và bảo mật dữ liệu, Integration Services (hỗ trợ quy trình ETL - Trích xuất, Chuyển đổi, Nạp dữ liệu), Reporting Services và Analysis Services.
  • Cơ chế xác thực và mã hóa mật khẩu Identity Framework: Áp dụng thuật toán băm PBKDF2 (Password-Based Key Derivation Function 2) với nguyên lý dẫn xuất khóa: $$\text{Key} = \text{PBKDF2}(\text{Password}, \text{Salt}, \text{Iterations-count}, \text{Hash-function}, \text{Derived-key-len})$$ Thuật toán kết hợp chuỗi ngẫu nhiên (salt) cùng số vòng lặp băm lớn để gia tăng độ phức tạp tính toán, bảo vệ mật khẩu trước các kỹ thuật tấn công vét cạn (brute-force) hoặc từ điển. Độ phức tạp của mật khẩu được áp dụng qua các tham số cấu hình trong tệp Startup.cs.
  • Khung giải pháp an toàn bảo mật ứng dụng web:
    • Phòng chống XSRF/CSRF (Cross-Site Request Forgery): Sử dụng FormTagHelper, phương thức Html.BeginForm(), thẻ @Html.AntiForgeryToken(), bộ lọc [ValidateAntiForgeryToken] tại Controller và bộ lọc toàn cục AutoValidateAntiforgeryToken cho tất cả các HTTP POST actions.
    • Phòng chống tấn công chuyển hướng mở (Open Redirect): Đảm bảo tính hợp lệ của đường dẫn chuyển hướng sau đăng nhập bằng phương thức LocalRedirect() và hàm kiểm tra Url.IsLocalUrl(), ngăn ngừa việc chuyển hướng người dùng sang các tên miền độc hại bên ngoài.
    • Phòng chống XSS (Cross-Site Scripting): Thực hiện cơ chế mã hóa đầu ra tự động bằng bộ xử lý Razor (cú pháp @), sử dụng thuộc tính asp-for trong Tag Helpers, mã hóa dữ liệu văn bản thông qua thư viện System.Text.Encodings.Web. Đối với các trường nội dung bài viết cần cho phép định dạng HTML đặc biệt, hệ thống xử lý bằng các thuộc tính kiểm soát như [ValidateInput(false)], [AllowHtml], [RegularExpressionAttribute] hoặc thư viện AntiXssLibrary.
    • Phòng chống SQL Injection: Sử dụng cơ chế tham số hóa các câu truy vấn thông qua việc áp dụng Entity Framework kết hợp biểu thức LINQ (Language Integrated Query), ngăn chặn việc chèn các đoạn mã SQL tùy ý qua dữ liệu đầu vào của người dùng.

Phương pháp nghiên cứu thực nghiệm bao gồm: khảo sát hiện trạng thực tế từ các website thương mại cùng ngành; mô hình hóa yêu cầu phần mềm bằng lược đồ Use Case chuẩn UML; biểu diễn tiến trình nghiệp vụ bằng lưu đồ thuật toán giải thuật; thiết kế cơ sở dữ liệu quan hệ theo các dạng chuẩn hóa; và kiểm thử tích hợp giao diện người dùng dựa trên phản hồi thao tác thực tế. Nguồn dữ liệu sử dụng trong hệ thống bao gồm cơ sở dữ liệu danh mục cây cảnh, bảng biểu dịch đa ngôn ngữ và tệp dữ liệu JSON chứa danh mục đơn vị hành chính Việt Nam (Tỉnh/Thành phố, Quận/Huyện, Phường/Xã).


Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng, phân chia rõ ràng giữa tầng xử lý nghiệp vụ phía máy chủ và tầng hiển thị phía máy khách.

1. Kiến trúc luồng xử lý và các giải pháp kỹ thuật

  • Lưu trữ giỏ hàng phía Client bằng LocalStorage: Thay vì lưu trạng thái giỏ hàng vào Session phía server (dễ bị mất dữ liệu khi phiên làm việc hết hạn hoặc khi người dùng vô tình đóng trình duyệt), hệ thống sử dụng công nghệ Web Storage (LocalStorage). Giải pháp này cho phép người dùng thoải mái thêm sản phẩm vào giỏ hàng ngay cả khi chưa đăng nhập, bảo toàn dữ liệu qua nhiều phiên duyệt web và giảm thiểu tài nguyên tiêu hao trên máy chủ.
  • Tích hợp cổng thanh toán trực tuyến VNPAY: Hệ thống kết nối với API của VNPAY. Sau khi người dùng xác nhận giỏ hàng và chọn phương thức thanh toán trực tuyến, hệ thống sẽ chuyển tiếp thông tin hóa đơn sang cổng thanh toán của ngân hàng liên kết, tự động ghi nhận trạng thái thanh toán thành công và cập nhật tức thời vào cơ sở dữ liệu đơn hàng.
  • Xác thực đa kênh (OAuth): Bên cạnh cơ chế đăng nhập truyền thống dựa trên ASP.NET Identity, hệ thống tích hợp API đăng nhập bằng tài khoản mạng xã hội (Google và Facebook). Khi người dùng đăng nhập bằng tài khoản bên thứ ba lần đầu, hệ thống tự động trích xuất thông tin định danh và chuyển hướng đến trang cập nhật tên hiển thị trong hệ thống.
  • Chuẩn hóa dữ liệu địa chỉ giao hàng: Nhằm giảm thiểu sai sót trong quá trình nhập địa chỉ giao hàng, hệ thống tích hợp tệp dữ liệu cấu trúc .json chứa danh sách Tỉnh/Thành phố, Quận/Huyện và Phường/Xã, tạo ra các trường chọn phân cấp tự động, giúp tối ưu hóa thời gian đặt hàng cho người tiêu dùng.

2. Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu của hệ thống được xây dựng trên Microsoft SQL Server, bao gồm 37 bảng dữ liệu quan hệ, được phân thành 5 nhóm cấu trúc chính:

Nhóm dữ liệu Danh sách bảng chi tiết Vai trò chức năng chính
Xác thực & Phân quyền (ASP.NET Identity) AspNetUsers, AspNetRoles, AspNetUserRoles, AspNetUserClaims, AspNetRoleClaims, AspNetUserLogins, AspNetUserTokens Quản lý tài khoản, thông tin băm mật khẩu, mã xác thực phiên, danh sách vai trò người dùng (Admin, User) và chi tiết quyền hạn truy cập của từng vai trò.
Quản lý Sản phẩm & Danh mục Products, Categories, ProductCategories, ProductColors, ProductImgs, ProductTranslations, CategoryTranslations Lưu trữ thông tin cây cảnh, phân loại danh mục, bảng bổ sung nhiều hình ảnh chi tiết, quản lý biến thể màu sắc, số lượng tồn kho và lưu trữ nội dung dịch đa ngôn ngữ.
Quản lý Đơn hàng & Khách hàng Orders, ProductOrders, Customers Lưu trữ thông tin khách mua hàng, trạng thái xử lý đơn hàng (chờ xác nhận, đang giao, hoàn thành, hủy đơn), chi tiết từng dòng sản phẩm trong đơn và phương thức thanh toán.
Quản lý Tin tức & Kiến thức Blogs, BlogCategories, CategoryNews, CategoryNewTranslations, BlogTranslations Quản lý các bài viết hướng dẫn kỹ thuật trồng, chăm sóc và trang trí cây cảnh; hỗ trợ phân loại danh mục tin tức và bản dịch bài viết theo từng ngôn ngữ.
Tương tác & Cấu hình hệ thống Feedbacks, FeebackImages, ShopFeedbacks, Contacts, Languages Lưu trữ đánh giá của người mua (điểm số sao, nhận xét, hình ảnh thực tế), phản hồi của chủ cửa hàng đối với đánh giá, tiếp nhận thông tin liên hệ và quản lý mã ngôn ngữ hỗ trợ.

3. Thiết kế luồng giải thuật chức năng

  • Quy trình đăng ký và phân quyền: Dữ liệu đăng ký được kiểm tra hợp lệ tại Client và Server. Mật khẩu được mã hóa qua Identity Framework trước khi ghi vào bảng AspNetUsers. Mọi tài khoản tạo mới được gán mặc định vai trò "User". Quyền "Admin" chỉ được cấp phát độc quyền thông qua giao diện quản trị của Quản trị viên.
  • Quy trình đăng nhập: Hệ thống xác minh thông tin đăng nhập; nếu hợp lệ, hệ thống kiểm tra vai trò người dùng để điều hướng phù hợp: chuyển hướng đến trang quản trị (Admin Dashboard) nếu có quyền "Admin", hoặc chuyển về trang mua sắm đối với quyền "User".
  • Quy trình hủy đơn hàng: Khách hàng chỉ được phép kích hoạt thao tác hủy đơn khi đơn hàng đang ở trạng thái "Chờ xác nhận". Khi hủy, hệ thống không thực hiện lệnh xóa vật lý bản ghi trong cơ sở dữ liệu (DELETE) mà chỉ cập nhật lại cờ trạng thái đơn hàng. Giải pháp này giúp doanh nghiệp bảo toàn lịch sử giao dịch nhằm phục vụ công tác thống kê, báo cáo và phân tích lý do hủy đơn.
  • Quy trình đánh giá sản phẩm: Chỉ những khách hàng đã đăng nhập và sở hữu đơn hàng có trạng thái "Giao hàng thành công" mới được kích hoạt quyền đánh giá sản phẩm. Mỗi khách hàng được gửi đánh giá 1 lần duy nhất cho mỗi đơn hàng đã hoàn tất, bao gồm số sao, nội dung nhận xét và tệp ảnh chụp thực tế.

Nội dung chính theo từng chương

Chương 1: Mở đầu

Chương này thiết lập cơ sở hình thành đề tài thông qua việc phân tích bối cảnh suy giảm của thương mại truyền thống và sự trỗi dậy của thương mại điện tử sau đại dịch COVID-19. Tác giả chỉ ra tính cấp thiết của việc xây dựng một website bán cây cảnh chuyên biệt để tối ưu hóa quy trình kết nối giữa người bán và người tiêu dùng. Chương 1 xác định rõ 3 mục tiêu nghiên cứu trọng tâm, xác định đối tượng người dùng cuối và quản trị viên, đồng thời khoanh vùng phạm vi công nghệ trong khuôn khổ ASP.NET Core MVC 5.0, SQL Server, Entity Framework và Identity Framework. Các giới hạn đề tài về xác thực định danh và logistics cũng được tác giả công bố minh bạch tại đây.

Chương 2: Cơ sở lý thuyết

Nội dung chương tập trung giới thiệu và làm rõ nền tảng công nghệ sử dụng trong đồ án:

  • Phân tích nguyên lý kiến trúc Model-View-Controller (MVC) trong ASP.NET Core, làm nổi bật lợi thế phân tách logic nghiệp vụ và giao diện, tạo điều kiện thuận lợi cho việc tái sử dụng mã nguồn và phân công công việc giữa Front-End và Back-End.
  • Khái quát kiến trúc Microsoft SQL Server và các thành phần dịch vụ phụ trợ (Database Engine, Integration Services/ETL, Replication...).
  • Trình bày chi tiết cơ chế băm mật khẩu PBKDF2 của Identity Framework, công thức tính toán và các thuộc tính cấu hình độ mạnh mật khẩu tại Startup.cs.
  • Phân tích bản chất kỹ thuật và hiện thực hóa các giải pháp phòng chống 4 lỗ hổng bảo mật ứng dụng web cốt lõi: Cross-Site Request Forgery (CSRF/XSRF), Open Redirect, Cross-Site Scripting (XSS) và SQL Injection.

Chương 3: Thiết kế phần mềm

Đây là chương nội dung kỹ thuật trọng tâm của đồ án, bao gồm 4 phần:

  • Khảo sát hiện trạng: Phân tích chi tiết ưu điểm và nhược điểm trên giao diện, tính năng và quy trình đặt hàng của 3 website mẫu (Locat, Cây Xinh, 9X Garden).
  • Xác định yêu cầu: Thiết lập bảng yêu cầu chức năng cho người dùng cuối (đa ngôn ngữ, xem tin tức/sản phẩm, giỏ hàng, đặt hàng qua VNPAY, hủy đơn, đánh giá sản phẩm, xem lịch sử mua hàng) và quản trị viên (quản lý tài khoản, phân quyền, quản lý danh mục, tin tức, sản phẩm, đơn hàng, đánh giá).
  • Mô hình hóa yêu cầu: Xây dựng Lược đồ Use Case tổng quát gồm 20 use case chức năng; xây dựng các lược đồ Use Case phân rã và bảng đặc tả chi tiết cho từng nghiệp vụ; thiết kế 7 lưu đồ thuật toán cho các quy trình then chốt (đăng ký, đăng nhập, thêm giỏ hàng bằng LocalStorage, mua hàng, hủy đơn, đánh giá sản phẩm, phân quyền tài khoản).
  • Thiết kế cơ sở dữ liệu: Xây dựng sơ đồ quan hệ thực thể (ERD) và thiết kế chi tiết cấu trúc trường, kiểu dữ liệu và ràng buộc ý nghĩa cho 37 bảng dữ liệu quan hệ của hệ thống.

Chương 4: Thiết kế giao diện

Chương 4 mô tả chi tiết kết quả xây dựng giao diện người dùng trên thực tế, bao gồm 16 màn hình chức năng chính:

  • Nhóm giao diện người dùng: Giao diện Trang chủ, Đăng ký, Đăng nhập, Giới thiệu chung, Kiến thức (danh sách tin tức), Chi tiết kiến thức, Liên hệ, Danh mục sản phẩm, Chi tiết sản phẩm (hiển thị lượt bán, điểm sao, nhiều hình ảnh, đánh giá từ khách hàng), Giỏ hàng (điều chỉnh số lượng, xóa mục), Mua hàng (chọn địa chỉ phân cấp qua tệp JSON), Xem lịch sử mua hàng, và Giao diện cổng thanh toán liên kết VNPAY.
  • Nhóm giao diện quản trị: Giao diện Quản lý sản phẩm (thêm/sửa/xóa, quản lý ảnh phụ, màu sắc, bản dịch), Quản lý tin tức (bài viết, danh mục, bản dịch) và Giao diện Quản lý đơn hàng (theo dõi danh sách và cập nhật trạng thái đơn hàng).

Chương 5: Kết luận

Chương tổng kết đánh giá toàn diện các kết quả kỹ thuật đã hoàn thành theo mục tiêu ban đầu, chỉ rõ những hạn chế còn tồn tại trong phạm vi phiên bản hiện tại, đồng thời vạch ra các định hướng nghiên cứu và nâng cấp hệ thống trong tương lai.


Kết quả và đóng góp

Hệ thống đã triển khai thành công một website thương mại điện tử chuyên ngành cây cảnh hoàn chỉnh với đầy đủ các phân hệ nghiệp vụ, đạt được các kết quả kỹ thuật cụ thể:

  • Hoàn thành đầy đủ 20 use case chức năng theo đặc tả thiết kế, bao gồm toàn bộ luồng mua sắm của khách hàng và bảng điều khiển quản trị tập trung của người quản lý cửa hàng.
  • Xây dựng hoàn chỉnh cơ sở dữ liệu quan hệ gồm 37 bảng dữ liệu trên Microsoft SQL Server, hỗ trợ xử lý toàn vẹn dữ liệu từ khâu sản phẩm, biến thể, tồn kho, đơn hàng đến bài viết tin tức.
  • Tích hợp thành công chức năng thanh toán trực tuyến qua cổng VNPAY, cho phép thanh toán qua thẻ ngân hàng và tự động cập nhật trạng thái đơn hàng, loại bỏ quy trình chuyển khoản thủ công.
  • Ứng dụng giải pháp LocalStorage cho giỏ hàng, cho phép lưu trữ sản phẩm bền bỉ trên máy khách mà không bắt buộc đăng nhập trước và không phụ thuộc vào trạng thái Session.
  • Hiện thực hóa thành công cấu trúc dữ liệu đa ngôn ngữ (hỗ trợ song song tiếng Việt và tiếng Anh) thông qua các bảng dịch chuyên biệt (ProductTranslations, CategoryTranslations, BlogTranslations, CategoryNewTranslations).
  • Áp dụng các giải pháp bảo mật theo khuyến nghị của Microsoft, vô hiệu hóa nguy cơ từ các cuộc tấn công CSRF, Open Redirect, XSS và SQL Injection.

Về mặt đóng góp giải pháp, đề tài đã chỉ ra và khắc phục được các điểm nghẽn phổ biến của các trang web bán cây cảnh trên thị trường: bổ sung trường dữ liệu hiển thị số lượng sản phẩm đã bán, điểm số đánh giá sao và danh sách bình luận kèm hình ảnh thực tế của người mua; tích hợp danh mục địa chính phân cấp chuẩn từ tệp JSON giúp giảm thiểu thời gian nhập liệu khi đặt hàng; đồng thời duy trì trạng thái dữ liệu đơn hàng bị hủy nhằm phục vụ việc phân tích hành vi tiêu dùng và nâng cao hiệu quả kinh doanh.


Hạn chế và hướng nghiên cứu tiếp

Căn cứ theo công bố của tác giả trong đồ án, hệ thống còn tồn tại một số hạn chế kỹ thuật:

  • Hệ thống chưa hỗ trợ cơ chế xác thực danh tính người dùng thông qua mã OTP gửi về Email hoặc tin nhắn số điện thoại khi đăng ký tài khoản.
  • Chưa kết nối trực tiếp với API của các đơn vị dịch vụ vận chuyển chuyên nghiệp (như Giao Hàng Nhanh, Viettel Post...) để tự động tính toán cước phí vận chuyển chính xác theo tọa độ địa lý/khoảng cách và trọng lượng gói hàng, cũng như chưa cung cấp mã theo dõi vị trí đơn hàng theo thời gian thực cho người mua.
  • Phân hệ phản hồi đánh giá mới chỉ cho phép người mua tải lên hình ảnh tĩnh kèm văn bản, chưa hỗ trợ người dùng đăng tải video trải nghiệm sản phẩm.

Hướng phát triển tiếp theo của đề tài được xác định tập trung vào việc:

  • Tích hợp dịch vụ SMS Gateway hoặc SMTP Server để triển khai quy trình xác thực hai bước (2FA) và kích hoạt tài khoản qua Email/SMS.
  • Liên kết hệ thống với các đơn vị vận chuyển nhằm tự động hóa quy trình tạo vận đơn, tính toán biểu phí giao hàng linh hoạt và cung cấp giao diện tra cứu lộ trình vận chuyển trực tiếp trên website.
  • Nâng cấp phân hệ đánh giá sản phẩm, hỗ trợ tiếp nhận và tối ưu hóa hiển thị tệp video đánh giá từ khách hàng.

Giá trị tham khảo

Tài liệu đồ án mang lại giá trị tham khảo thiết thực cho sinh viên các chuyên ngành Công nghệ thông tin, Công nghệ Kỹ thuật Máy tính, Kỹ thuật Phần mềm và Hệ thống Thông tin khi thực hiện khóa luận tốt nghiệp hoặc phát triển các dự án ứng dụng web thương mại điện tử trên nền tảng .NET:

  • Tài liệu tham khảo về phân tích thiết kế: Hệ thống cung cấp bảng mô tả 20 use case chi tiết, hệ thống lưu đồ thuật toán rõ ràng cho từng quy trình nghiệp vụ mua bán, đăng ký, đăng nhập và phân quyền tài khoản, làm mẫu cho việc thiết kế tài liệu kỹ thuật phần mềm.
  • Tài liệu tham khảo về cơ sở dữ liệu đa ngôn ngữ: Thiết kế chuẩn hóa 37 bảng quan hệ trên SQL Server, đặc biệt là cấu trúc các bảng phân tách bản dịch (Translations), là mô hình mẫu chuẩn xác cho các đồ án cần triển khai tính năng quốc tế hóa (i18n).
  • Tài liệu tham khảo về bảo mật ứng dụng web: Phần tổng hợp và hiện thực hóa các cơ chế ngăn chặn 4 lỗ hổng bảo mật phổ biến (CSRF, XSS, SQL Injection, Open Redirect) cùng việc phân tích giải thuật băm mật khẩu PBKDF2 cung cấp các đoạn code mẫu và quy chuẩn thực hành bảo mật có giá trị ứng dụng cao trong môi trường ASP.NET Core.

Câu hỏi thường gặp

1. Vì sao tác giả lựa chọn giải pháp LocalStorage thay vì Session để xử lý giỏ hàng?
Trả lời: Tác giả sử dụng LocalStorage vì đây là tính năng lưu trữ dữ liệu cục bộ trên trình duyệt của người dùng, không bị xóa khi người dùng tắt trình duyệt và có thể truy cập lại trong các phiên tiếp theo. Giải pháp này giúp người dùng có thể thoải mái thêm sản phẩm vào giỏ hàng mà không bắt buộc phải đăng nhập trước, đồng thời tránh được tình trạng giỏ hàng bị xóa (reset) khi hết thời gian phiên làm việc như khi sử dụng Session trên máy chủ.

2. Cơ chế băm mật khẩu trong đồ án sử dụng thuật toán nào và các tham số cấu thành gồm những gì?
Trả lời: Hệ thống tích hợp Identity Framework và sử dụng thuật toán băm mặc định PBKDF2 (Password-Based Key Derivation Function 2). Công thức thuật toán là: Key = PBKDF2(Password, Salt, Iterations-count, Hash-function, Derived-key-len). Các tham số đầu vào gồm mật khẩu người dùng (Password), chuỗi bit ngẫu nhiên bổ sung (Salt), số lần lặp quá trình băm nhằm tăng độ phức tạp tính toán (Iterations-count), hàm băm nền tảng như SHA-1/SHA-256/SHA-512 (Hash-function) và độ dài của khóa dẫn xuất được tạo ra (Derived-key-len).

3. Đồ án áp dụng những kỹ thuật nào trong ASP.NET Core MVC để ngăn chặn tấn công giả mạo yêu cầu chéo trang (XSRF/CSRF)?
Trả lời: Đồ án triển khai cơ chế chống CSRF thông qua: (1) Sử dụng FormTagHelper hoặc phương thức Html.BeginForm trong Razor Views để tự động sinh mã thông báo chống giả mạo vào các phần tử biểu mẫu HTML; (2) Chèn mã xác thực trực tiếp bằng @Html.AntiForgeryToken() bên trong thẻ <form>; (3) Đặt thuộc tính [ValidateAntiForgeryToken] trước các Action xử lý trong Controller; hoặc (4) Áp dụng thuộc tính AutoValidateAntiforgeryToken để tự động bảo vệ tất cả các HTTP POST actions trong Controller mà không cần cấu hình thủ công từng phương thức.

4. Vì sao hệ thống không xóa bản ghi dữ liệu khi khách hàng thực hiện thao tác hủy đơn hàng?
Trả lời: Theo thiết kế của tác giả, hệ thống chỉ cho phép hủy các đơn hàng đang ở trạng thái "Chờ xác nhận" và không xóa dữ liệu đơn hàng khỏi cơ sở dữ liệu. Việc giữ lại thông tin đơn hàng đã hủy giúp doanh nghiệp bảo toàn đầy đủ lịch sử giao dịch, phục vụ việc thống kê, lập báo cáo và phân tích nguyên nhân hủy đơn của khách hàng, từ đó hiểu rõ hơn hành vi người dùng và cải thiện quy trình vận hành kinh doanh.

5. Cơ chế hỗ trợ đa ngôn ngữ (tiếng Việt và tiếng Anh) được hiện thực hóa như thế nào trong cơ sở dữ liệu?
Trả lời: Tính năng đa ngôn ngữ được thiết kế thông qua các bảng dịch chuyên biệt liên kết với bảng thực thể gốc qua khóa ngoại và mã ngôn ngữ (LanguageId). Cụ thể, hệ thống sử dụng bảng ProductTranslations để lưu bản dịch của sản phẩm, CategoryTranslations cho danh mục sản phẩm, BlogTranslations cho bài viết tin tức và CategoryNewTranslations cho danh mục tin tức. Khi quản trị viên thêm hoặc sửa dữ liệu, hệ thống sẽ kiểm tra xem bản ghi tương ứng với ngôn ngữ được chọn đã tồn tại chưa để thực hiện thao tác tạo mới hoặc cập nhật bản dịch.


Kết luận

Đồ án tốt nghiệp của sinh viên Nguyễn Quang Linh đã hoàn thành trọn vẹn mục tiêu nghiên cứu và xây dựng website thương mại điện tử chuyên doanh cây cảnh dựa trên nền tảng công nghệ ASP.NET Core MVC kết nối hệ quản trị cơ sở dữ liệu Microsoft SQL Server. Hệ thống giải quyết hiệu quả các nhược điểm thực tế ghi nhận từ quá trình khảo sát thị trường thông qua việc tích hợp cổng thanh toán trực tuyến VNPAY, chuẩn hóa quy trình đặt hàng với dữ liệu địa chính JSON, quản lý giỏ hàng linh hoạt bằng LocalStorage và triển khai đầy đủ các cơ chế bảo mật web cốt lõi. Đây là tài liệu tham khảo có giá trị kỹ thuật cao và tính chuẩn mực thực tế cho sinh viên ngành Công nghệ Kỹ thuật Máy tính và Công nghệ Thông tin trong việc thiết kế, xây dựng và hoàn thiện các ứng dụng web thương mại điện tử theo kiến trúc MVC.