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

Đồ án cơ sở "Lập trình Website Bán hàng CozaStore" do sinh viên Nguyễn Thành Phát (MSSV: 2000006273, khóa 2020) thực hiện dưới sự hướng dẫn của giảng viên Nguyễn Mai Huy tại Khoa Công nghệ Thông tin, Trường Đại học Nguyễn Tất Thành, hoàn thành vào ngày 31 tháng 12 năm 2021.

Về bối cảnh thực tiễn, tác giả chỉ ra rằng sự phát triển của công nghệ thông tin đã hỗ trợ con người tối ưu hóa thời gian và công sức trong nhiều hoạt động xã hội, tiêu biểu như mua sắm trực tuyến, đặt xe hoặc đăng ký tiêm vaccine qua website trong thời kỳ đại dịch Covid-19. Bên cạnh đó, bối cảnh thị trường lao động cho thấy nhân lực ngành lập trình đang trong tình trạng khan hiếm do tính chất công việc đòi hỏi tư duy logic và độ chuẩn xác cao. Tình trạng cầu vượt cung tạo ra mức thu nhập khởi điểm cạnh tranh cho vị trí lập trình viên, đặc biệt trong mảng phát triển ứng dụng web. Đáng chú ý, ngành công nghệ phần mềm thể hiện mức độ thích ứng cao khi duy trì đà tăng trưởng ổn định trong bối cảnh giãn cách dịch bệnh.

Về mặt học thuật và đào tạo, học phần Lập trình Web giữ vai trò môn học nền tảng, có nhiệm vụ tổng hợp và liên kết khối kiến thức tích lũy từ ba môn học tiên quyết: Cơ sở lập trình, Kỹ thuật lập trình và Hệ quản trị cơ sở dữ liệu.

Mục tiêu và nhiệm vụ của đồ án được xác định cụ thể như sau:

  1. Tiếp thu và làm chủ các kỹ thuật lập trình web nền tảng với công nghệ ASP.NET MVC do Microsoft phát triển.
  2. Xây dựng cấu trúc kết nối cơ sở dữ liệu quan hệ thông qua công cụ Object-Relational Mapping (Entity Framework) và ngôn ngữ truy vấn tích hợp LINQ.
  3. Thiết lập cơ chế theo dõi phiên người dùng, kiểm soát trạng thái ứng dụng (Cookie, Session, Application Objects) và quản lý rủi ro an toàn thông tin (chống tấn công XSS và SQL Injection).
  4. Thiết kế, hiện thực hóa và vận hành hoàn chỉnh hệ thống website bán hàng thương mại điện tử CozaStore với đầy đủ chức năng quản trị, giỏ hàng và thanh toán trực tuyến qua ví MoMo.
  5. Triển khai (public) mã nguồn ứng dụng để chạy thử nghiệm trên môi trường Internet.

Đối tượng nghiên cứu của đồ án là quy trình xây dựng ứng dụng web thương mại điện tử trên nền tảng ASP.NET MVC. Phạm vi nghiên cứu tập trung vào kiến trúc phần mềm MVC, hệ quản trị cơ sở dữ liệu quan hệ sử dụng tập tin .MDF trong môi trường phát triển Microsoft Visual Studio (phiên bản từ 2013 trở lên), kết hợp ngôn ngữ Razor, C# và cổng thanh toán trung gian MoMo.

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

Tác giả vận dụng các khung lý thuyết, công nghệ và mô hình kỹ thuật phần mềm tiêu chuẩn trong hệ sinh thái Microsoft .NET:

  • Mô hình kiến trúc MVC (Model – View – Controller): Mẫu kiến trúc tách biệt ba mối quan tâm chính gồm dữ liệu miền/nghiệp vụ (Model), giao diện hiển thị tương tác (View) và bộ điều khiển tiếp nhận xử lý luồng yêu cầu HTTP (Controller).
  • Thư viện ASP.NET MVC: Nền tảng phát triển ứng dụng web kế thừa từ .NET Framework, tích hợp cú pháp Razor phối hợp giữa HTML và C#, cùng hệ thống các hàm HTML Helper để đơn giản hóa giao diện.
  • Công nghệ O/RM và Entity Framework: Mô hình ánh xạ quan hệ - đối tượng (O/RM) đóng vai trò trung gian chuyển đổi dữ liệu dạng bảng quan hệ sang dạng lớp đối tượng trong C#. Tác giả phân tích ba hướng tiếp cận kỹ thuật của Entity Framework gồm Database First, Code First, Model First và lựa chọn Database First để sinh mã nguồn tự động từ lược đồ cơ sở dữ liệu có sẵn.
  • Ngôn ngữ truy vấn LINQ (Language Integrated Query): Cơ chế truy vấn dữ liệu đồng nhất trên C# sử dụng các mệnh đề truy vấn chuẩn (from, where, orderby, groupby, select) và phương thức LINQ kết hợp biểu thức Lambda.
  • Cơ chế lưu trữ trạng thái: Sử dụng các đối tượng ngầm định thuộc tầng giao thức (HttpRequestBase, HttpServerUtilityBase), đối tượng phạm vi ứng dụng (Application Objects), tập tin văn bản phía máy khách (Cookie) và phiên làm việc phía máy chủ (Session).
  • Nguyên lý an ninh ứng dụng web: Cơ chế xác thực danh tính (Authentication), phân quyền truy cập (Authorization), cơ chế bảo toàn giao dịch CSDL (Transactions trong khối try-catch) và các giải pháp lọc dữ liệu đầu vào.

Phương pháp nghiên cứu thực tế được triển khai là phương pháp kỹ thuật phần mềm (thực nghiệm xây dựng hệ thống):

  • Khảo sát và tổng hợp tài liệu chuyên môn từ giáo trình nội bộ (bài giảng của giảng viên hướng dẫn) và các nguồn tham khảo chuyên ngành (Microsoft Docs, Magenest).
  • Phân tích cấu trúc thư mục dự án và thiết kế hệ thống theo chuẩn MVC trên Visual Studio.
  • Thiết kế mô hình dữ liệu quan hệ, cấu hình chuỗi kết nối (Connection String) qua ADO.NET Entity Data Model Designer.
  • Lập trình thực nghiệm các module chức năng phía người dùng (Front-end) và quản trị hệ thống (Back-end).
  • Tích hợp giao diện mẫu thương mại điện tử CozaStore cùng cổng thanh toán MoMo qua API.

Nguồn dữ liệu của đề tài bao gồm lược đồ cơ sở dữ liệu quan hệ lưu dưới định dạng .MDF trong thư mục App_Data, cùng các bộ thư viện giao diện nguồn mở (Bootstrap, CSS, JavaScript).

Thiết kế và triển khai

Hệ thống CozaStore được cấu trúc theo mô hình 3 tầng phân tách trách nhiệm chặt chẽ:

  • Tầng dữ liệu (Model): Đại diện cho các thực thể bảng trong cơ sở dữ liệu, quản lý trạng thái nghiệp vụ và các phương thức xử lý logic tính toán.
  • Tầng hiển thị (View): Chịu trách nhiệm hiển thị giao diện người dùng bằng ngôn ngữ Razor (.cshtml), khai thác tệp mẫu chung _Layout.cshtml thông qua hàm @RenderBody() nhằm tái sử dụng cấu trúc Header và Footer, kết hợp các hàm HTML Helper để tạo biểu mẫu nhập liệu.
  • Tầng điều khiển (Controller): Kế thừa từ lớp điều khiển của hệ thống, tiếp nhận yêu cầu từ máy khách thông qua cấu hình định tuyến RouteConfig.cs (mặc định định dạng http://localhost/{Controller}/{View}), thực thi các Action trả về đối tượng ActionResult, đồng thời truyền dữ liệu sang View bằng ViewBag (thuộc tính động) hoặc ViewData (cấu trúc từ điển Dictionary).
Phân hệ hệ thống Nhóm chức năng cụ thể Mô tả kỹ thuật thực hiện
Giao diện Client (Người dùng) Tìm kiếm, gợi ý và hiển thị sản phẩm Phân loại danh mục, lọc theo điều kiện, sắp xếp dữ liệu thông qua truy vấn LINQ to Entities
Tương tác giao diện Thay đổi giao diện nền (Theme), duyệt bài viết tin tức
Mua sắm và Giỏ hàng Lưu trữ các mặt hàng được chọn trong phiên thông qua đối tượng Session
Thanh toán trực tuyến Tích hợp cổng thanh toán ví điện tử MoMo
Giao diện Admin (Quản trị) Xác thực tài khoản Đăng nhập hệ thống quản trị, xác minh danh tính và kiểm tra quyền truy cập
Quản lý danh mục và bài viết Thêm, sửa, xóa chủng loại ngành hàng, đăng bài viết và xem danh sách bài viết
Quản lý sản phẩm Biểu mẫu đăng sản phẩm mới và bảng danh sách sản phẩm
Quản lý nghiệp vụ bán hàng Quản lý hồ sơ khách hàng và theo dõi danh sách đơn đặt hàng

Về an toàn hệ thống, tác giả thiết lập quy trình kiểm soát phiên làm việc theo luồng: Đăng nhập (Authentication) chuyển sang lưu trữ trạng thái tại Session, từ đó kiểm tra quyền hạn (Authorization) trước khi cho phép truy cập các chức năng quản trị. Cơ chế giao dịch Transactions được lồng trong khối try-catch khi thao tác với Entity Framework nhằm đảm bảo tính toàn vẹn dữ liệu.

Để ngăn chặn tấn công Cross-Site Scripting (XSS) đánh cắp document.cookie, hệ thống áp dụng kỹ thuật kiểm tra và lọc các ký tự nguy hiểm (<script>, <, >) trước khi lưu trữ vào cơ sở dữ liệu, kết hợp khuyến nghị tích hợp gói AntiXSS từ NuGet Package. Đối với nguy cơ SQL Injection (tiêm chuỗi truy vấn dạng ' or 1=1--), hệ thống loại bỏ phương thức ghép chuỗi SQL thuần, chuyển sang sử dụng truy vấn tham số hóa (Parameterized Queries) thông qua đối tượng SqlCommand hoặc OleDbCommand, cho phép môi trường .NET tự động xác thực kiểu dữ liệu trước khi thực thi.

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

Phần I: Kiến thức

Chương 1: Khởi động với kiến thức nền tảng

Chương này làm rõ khái niệm lập trình web thông qua phép so sánh với quá trình xây dựng nhà ở: thiết kế web tương đương với bản vẽ hình dáng bên ngoài (Front-end), còn lập trình web tương ứng với thi công nền móng và tiện nghi chịu lực bên trong (Back-end). Tác giả xác định các kiến thức bắt buộc phải chuẩn bị gồm HTML, CSS, JavaScript, thư viện giao diện Bootstrap, cùng các kỹ năng tự tra cứu lỗi và gỡ lỗi (fix bug).

Chương 2: Nhập môn ASP.NET và mô hình MVC

Chương 2 trình bày kiến trúc Model - View - Controller, chỉ rõ ưu điểm (hỗ trợ phát triển song song, hỗ trợ SEO, quản lý mã nguồn linh hoạt) và nhược điểm (phức tạp trong điều hướng, không tối ưu cho ứng dụng quy mô quá nhỏ). Tác giả cung cấp quy trình khởi tạo dự án trên Visual Studio, phân tích chức năng của các thư mục thành phần (App_Data, App_Start, Controllers, Models, Views, Web.config, Global.asax), cơ chế hoạt động của RouteConfig.cs, cấu trúc trang dùng chung _Layout.cshtml, kỹ thuật nhúng mã C# qua cú pháp Razor, các hàm HTML Helper và phương thức truyền tải dữ liệu giữa Controller và View qua ViewBag và ViewData.

Chương 3: Kết nối cơ sở dữ liệu trong ASP.NET

Tác giả phân tích vai trò của O/RM trong việc giải phóng lập trình viên khỏi thao tác viết mã SQL thủ công và chuyển đổi dữ liệu phức tạp. Chương này hướng dẫn chi tiết quy trình 6 bước cấu hình ADO.NET Entity Data Model trên Visual Studio theo hướng Database First, cảnh báo nguy cơ lộ chuỗi kết nối (Connection string). Nội dung chương đi sâu vào cú pháp truy vấn LINQ cơ bản (from, where, orderby, groupby, select), LINQ Method với Lambda Expression, cùng các phương thức tổng hợp dữ liệu (Max, Min, Sum, Count, Average) và điều hướng dữ liệu (Take, Skip, First, Last).

Chương 4: Lưu trữ và theo dõi người dùng

Chương 4 phân loại các cơ chế quản trị trạng thái trong môi trường web. Tác giả phân tích ba đối tượng ngầm định cốt lõi gồm Request (HttpRequestBase), Response và Server (HttpServerUtilityBase), đồng thời giải thích vai trò lưu trữ toàn cục của Application Objects. Hai kỹ thuật lưu trữ phiên được so sánh chi tiết: Cookie (lưu trữ văn bản tại máy khách, hạn dùng dài, độ an toàn thấp) và Session (lưu trữ dữ liệu đa dạng tại máy chủ, thời gian tồn tại gắn liền với phiên làm việc của trình duyệt, được điều khiển qua các sự kiện Session_Start và Session_End).

Chương 5: Rủi ro và Bảo mật

Chương 5 phân định ranh giới giữa hai khái niệm Authentication (xác minh danh tính) và Authorization (phân quyền hạn thao tác). Tác giả mô phỏng chi tiết cơ chế khai thác của hai hình thức tấn công mạng phổ biến: tấn công XSS thông qua chèn mã độc JavaScript lấy cắp Cookie phiên của người dùng, và tấn công SQL Injection bằng cách chèn biểu thức điều kiện luôn đúng (' or 1=1--) vào ô mật khẩu nhằm vượt qua bước kiểm tra đăng nhập. Các giải pháp phòng ngừa được đề xuất gồm xác thực dữ liệu đầu vào, sử dụng thư viện AntiXSS và áp dụng truy vấn tham số hóa (Parameterized Queries).

Phần 2: Xây dựng website bán hàng CozaStore

Chương 1: Ý tưởng

Trình bày bối cảnh hình thành ý tưởng xây dựng website thương mại điện tử chuyên doanh thời trang CozaStore và hoạch định danh mục các chức năng dự kiến cần triển khai cho hai nhóm đối tượng: khách hàng và quản trị viên.

Chương 2: Xây dựng sản phẩm đồ án

Nội dung chương mô tả chi tiết quy trình lập trình thực tế gồm 17 hạng mục kỹ thuật:

  1. Thiết kế cấu trúc cơ sở dữ liệu quan hệ.
  2. Xây dựng giao diện ứng dụng web.
  3. Hiện thực hóa tính năng gợi ý sản phẩm.
  4. Xây dựng công cụ tìm kiếm sản phẩm.
  5. Cài đặt bộ lọc và cơ chế sắp xếp sản phẩm.
  6. Thiết lập chức năng đăng nhập trang quản trị.
  7. Xây dựng trang thông tin chung của website.
  8. Lập trình tính năng tùy chỉnh nền giao diện (Theme).
  9. Xây dựng tính năng đăng bài viết tin tức.
  10. Lập trình trang hiển thị danh sách bài viết.
  11. Xây dựng module quản lý chủng loại và ngành hàng.
  12. Xây dựng biểu mẫu đăng tải sản phẩm mới.
  13. Lập trình giao diện bảng danh sách sản phẩm.
  14. Xây dựng trang quản lý thông tin khách hàng.
  15. Lập trình module quản lý danh sách đơn hàng.
  16. Hiện thực hóa chức năng giỏ hàng lưu trữ bằng Session.
  17. Tích hợp cổng thanh toán trực tuyến qua ví MoMo.

Chương 3: Public mã nguồn và chạy trên Internet

Chương cuối trình bày quy trình đóng gói, cấu hình tích hợp và phát hành toàn bộ mã nguồn của dự án CozaStore lên máy chủ môi trường Internet để vận hành thử nghiệm, đồng thời đánh giá các kết quả thực tế đạt được của sản phẩm.

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

Đồ án ghi nhận các kết quả kỹ thuật cụ thể đã hoàn thành:

  • Xây dựng thành công hệ thống website bán hàng thời trang CozaStore trên nền tảng ASP.NET MVC, liên kết cơ sở dữ liệu quan hệ cục bộ dạng .MDF.
  • Hiện thực hóa đầy đủ 17 module chức năng từ phân hệ giao diện khách hàng (tìm kiếm, lọc, giỏ hàng, thanh toán) đến phân hệ quản trị (quản lý danh mục, sản phẩm, tin tức, đơn hàng, khách hàng).
  • Tích hợp thành công giải pháp thanh toán điện tử thông qua API của ví MoMo vào quy trình hoàn tất đơn hàng.
  • Áp dụng các nguyên lý an ninh mạng cơ bản vào mã nguồn nhằm giảm thiểu nguy cơ tấn công từ lỗ hổng XSS và SQL Injection.

Đóng góp của tác giả thể hiện qua việc hệ thống hóa toàn diện lộ trình kỹ thuật phát triển ứng dụng web Microsoft .NET: từ việc giải thích lý thuyết kiến trúc, hướng dẫn chi tiết quy trình thao tác trên công cụ phát triển Visual Studio, đến việc hiện thực hóa một sản phẩm phần mềm thương mại điện tử hoàn chỉnh có khả năng vận hành thực tế trên môi trường Internet.

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

Báo cáo đồ án ghi nhận một số giới hạn dựa trên phạm vi triển khai thực tế:

  • Hệ thống cơ sở dữ liệu được cấu hình thử nghiệm cục bộ thông qua tập tin .MDF trong thư mục App_Data, chưa triển khai phân tán trên các hệ quản trị máy chủ chuyên dụng quy mô lớn.
  • Các biện pháp phòng chống rủi ro bảo mật (XSS, SQL Injection) mới dừng ở mức kiểm tra điều kiện lọc ký tự và kỹ thuật tham số hóa câu lệnh cơ bản, chưa tích hợp các cơ chế xác thực đa yếu tố hoặc tường lửa ứng dụng web chuyên sâu.

Hướng mở rộng tiếp theo của đồ án bao gồm: tiếp tục tối ưu hóa hiệu năng truy vấn dữ liệu với các tập dữ liệu lớn, tích hợp thêm nhiều cổng thanh toán điện tử nội địa và quốc tế, cũng như nâng cấp hệ thống lên các nền tảng .NET Core/Modern .NET mới hơn.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo thực hành phù hợp cho sinh viên chuyên ngành Công nghệ thông tin đang theo học học phần Lập trình Web hoặc bắt đầu tiếp cận công nghệ phát triển web trên nền tảng Microsoft ASP.NET MVC.

Tài liệu cung cấp giá trị tham khảo cụ thể ở các nội dung:

  • Hướng dẫn thực hành từng bước cấu hình kết nối Entity Framework theo mô hình Database First trên môi trường Visual Studio.
  • Kỹ thuật điều phối dữ liệu qua các thành phần _Layout.cshtml, @RenderBody(), HTML Helper, ViewBag và ViewData.
  • Mã mẫu và nguyên lý thiết lập cơ chế kiểm soát bảo mật đăng nhập kết hợp phiên làm việc (Session), phòng ngừa lỗi SQL Injection và phương thức kết nối thanh toán ví MoMo.

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

1. Khóa luận này tích hợp khối lượng kiến thức từ những môn học tiên quyết nào trong chương trình đào tạo?
Theo văn bản đồ án, học phần Lập trình Web và đề tài CozaStore đóng vai trò tổng hợp kiến thức từ ba môn học nền tảng đã học trước đó: Cơ sở lập trình, Kỹ thuật lập trình và Hệ quản trị cơ sở dữ liệu.

2. Đồ án phân tích các tình huống sử dụng nào của Entity Framework và lựa chọn giải pháp nào?
Tác giả phân tích ba hướng tiếp cận gồm: Database First (áp dụng khi đã có sẵn CSDL, thường dùng cho ứng dụng lớn), Code First (tạo các lớp C# trước để tự sinh bảng dữ liệu, phù hợp ứng dụng nhỏ) và Model First (thiết kế lược đồ trên EDMX Designer). Trong đồ án, tác giả chọn tình huống Database First (EF Designer from database) để kết nối hệ thống.

3. Tác giả phân tích hai phương thức tấn công web phổ biến nào và đề xuất cách xử lý ra sao?
Hai phương thức tấn công được phân tích chi tiết là XSS (Cross-Site Scripting chèn mã JavaScript độc hại vào cơ sở dữ liệu để đánh cắp Cookie người dùng) và SQL Injection (tiêm chuỗi truy vấn dạng ' or 1=1-- vào form đăng nhập). Cách phòng tránh XSS là kiểm tra lọc ký tự nguy hiểm (<script>, <, >) hoặc dùng thư viện AntiXSS từ NuGet; cách phòng tránh SQL Injection là sử dụng Parameterized Queries với đối tượng SqlCommand/OleDbCommand thay vì ghép chuỗi SQL trực tiếp.

4. Chức năng giỏ hàng và lưu trữ thông tin mua sắm trong phiên của website CozaStore được hiện thực hóa bằng cơ chế nào?
Chức năng giỏ hàng của website được xây dựng bằng cơ chế Session. Dữ liệu được lưu trữ trên bộ nhớ máy chủ và duy trì trong suốt phiên làm việc của người dùng, tự động giải phóng khi người dùng kết thúc phiên hoặc đóng trình duyệt web.

5. Đồ án sử dụng giải pháp thanh toán điện tử trung gian nào trong quy trình đặt hàng?
Đồ án tích hợp cổng thanh toán trực tuyến của ví điện tử MoMo tại Mục 17, Chương 2 (Phần 2) để xử lý các giao dịch mua hàng của khách hàng trên website CozaStore.

Kết luận

Đồ án cơ sở "Lập trình Website Bán hàng CozaStore" của sinh viên Nguyễn Thành Phát đã hoàn thành mục tiêu xây dựng một ứng dụng thương mại điện tử hoàn chỉnh dựa trên nền tảng ASP.NET MVC và Entity Framework Database First. Báo cáo đồ án phản ánh đầy đủ lộ trình từ việc củng cố lý thuyết kiến trúc, quản trị phiên, phòng chống lỗ hổng bảo mật đến khâu thiết kế dữ liệu và triển khai 17 chức năng nghiệp vụ thực tế. Sản phẩm đã tích hợp thành công cổng thanh toán trực tuyến MoMo và được phát hành trên môi trường mạng Internet. Đây là tài liệu thực hành có giá trị tham khảo rõ ràng cho sinh viên công nghệ thông tin trong các học phần lập trình web nền tảng.