Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada… Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài “Xây dựng website bán cây sử dụng ASP.NET Co
CƠ SỞ LÝ THUYẾT
ASP.NET CORE MVC
2.1.1 Giới thiệu về asp.net core
SQL SERVER
ĐH SƯ PHẠM KỸ THUẬT TP HCM
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc
BẢO MẬT
2.3.3 Ngăn chặn tấn công chuyển hướng mở
Chương 3 Thiết kế phần mềm
3.1.2 Xác định yêu cầu
3.2 Mô hình hóa yêu cầu
3.2.2 Use case quản lí giỏ hàng
3.2.4 Use case xem lịch sử đơn hàng
3.2.5 Use case quản lí tài khoản
3.2.6 Use case quản lí danh mục
3.2.7 Use case quản lí tin tức
3.2.8 Use case quản lí sản phẩm
3.2.9 Use case quản lí đơn hàng
3.2.10 Use case quản lí đánh giá
3.3 Lưu đồ thuật toán (flow chart)
3.3.1 Lưu đồ thuật toán đăng kí
3.3.2 Lưu đồ thuật toán đăng nhập
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 3.3.4 Lưu đồ thuật toán mua hàng
3.3.5 Lưu đồ thuật toán hủy đơn
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 3.4 Thiết kế cơ sở dữ liệu
3.4.1 Cơ sở dữ liệu iv
Chương 4 Thiết kế giao diện
4.2 Giao diện đăng kí và đăng nhập
4.3 Giao diện giới thiệu chung
4.5 Giao diện chi tiết kiến thức
4.8 Giao diện chi tiết sản phẩm
4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm
4.13 Giao diện quản lí tin tức
4.14 Giao diện quản lí đơn hàng
4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận
MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
1.2 MỤC TIÊU CỦA ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1.1 Giới thiệu về ASP.NET Core 3
2.3.3 Ngăn chặn tấn công chuyển hướng mở 7
CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi
3.1.2 Xác định yêu cầu 13
3.2 MÔ HÌNH HÓA YÊU CẦU 15
3.2.2 Use case quản lí giỏ hàng 17
3.2.4 Use case xem lịch sử mua hàng 19
3.2.5 Use case quản lí tài khoản 20
3.2.6 Use case quản lí danh mục 21
3.2.7 Use case quản lí tin tức 22
3.2.8 Use case quản lí sản phẩm 23
3.2.9 Use case quản lí đơn hàng 24
3.2.10 Use case quản lí đánh giá 25
3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26
3.3.1 Lưu đồ thuật toán đăng kí 26
3.3.2 Lưu đồ thuật toán đăng nhập 27
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
3.3.4 Lưu đồ thuật toán mua hàng 29
3.3.5 Lưu đồ thuật toán hủy đơn 30
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33
CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42
4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii
4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44
4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46
4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49
4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52
4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53
4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53
4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54
4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54
TÀI LIỆU THAM KHẢO 56 viii
Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5
Hình 2 3: Cách sử dụng form trong FormTagHelper 6
Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6
Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6
Hình 2 10: Cách mã hóa trong Razor 9
Hình 2 11: Gọi phương thức mã hóa trong controller 9
Hình 2 12: Ví dụ mã hóa trong controller 9
Hình 2 13: Truy vấn sql ban đầu 10
Hình 2 14: Truy vấn sql sau khi bị tấn công 10
Hình 3 1: Giao diện website Locat 12
Hình 3 2: Giao diện website cây xinh 12
Hình 3 4: Use case tổng quát 15
Hình 3 5: Use case quản lí giỏ hàng 17
Hình 3 6: Use case đặt hàng 18
Hình 3 7: Use case xem lịch sử mua hàng 19
Hình 3 8: Use case quản lí tài khoản 20
Hình 3 9: Use case quản lí danh mục 21
Hình 3 10: Use case quản lí tin tức 22
Hình 3 11: Use case quản lí sản phẩm 23
Hình 3 12: Use case quản lí đơn hàng 24
Hình 3 13: Use case quản lí đánh giá 25
Hình 3 14: Lưu đồ thuật toán đăng kí 26
Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix
Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
Hình 3 17: Lưu đồ thuật toán mua hàng 29
Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30
Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31
Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
Hình 3 21: Cơ sở dữ liệu 33
Hình 4 1: Giao diện trang chủ 42
Hình 4 2: Giao diện đăng kí 43
Hình 4 3: Giao diện đăng nhập 43
Hình 4 4: Giao diện giới thiệu chung 44
Hình 4 5: Giao diện kiến thức 45
Hình 4 6: Giao diện chi tiết kiến thức 46
Hình 4 7: Giao diện liên hệ 47
Hình 4 8: Giao diện sản phẩm 48
Hình 4 9: Giao diện chi tiết sản phẩm 49
Hình 4 10: Giao diện giỏ hàng 50
Hình 4 11: Giao diện mua hàng 51
Hình 4 12: Giao diện xem lịch sử mua hàng 52
Hình 4 13: Giao diện quản lí sản phẩm 53
Hình 4 14: Giao diện quản lí tin tức 53
Hình 4 15: Giao diện quản lí đơn hàng 54
Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x
Bảng 3 1: Mô tả use case tổng quát 15
Bảng 3 2: Mô tả use case quản lí giỏ hàng 17
Bảng 3 3: Mô tả use case đặt hàng 18
Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19
Bảng 3 5: Mô tả use case quản lí tài khoản 20
Bảng 3 6: Mô tả use case quản lí danh mục 21
Bảng 3 7: Mô tả use case quản lí tin tức 22
Bảng 3 8: Mô tả use case quản lí sản phẩm 23
Bảng 3 9: Mô tả use case quản lí đơn hàng 24
Bảng 3 10: Mô tả use case quản lí đánh giá 25
Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33
Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33
Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34
Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34
Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34
Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34
Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35
Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35
Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36
Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36
Bảng 3 21: Chi tiết dữ liệu bảng Categories 36
Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36
Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37
Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37
Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37
Bảng 3 26: Chi tiết dữ liệu bảng Customers 38
Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38
Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi
Bảng 3 29: Chi tiết dữ liệu bảng Languages 39
Bảng 3 30: Chi tiết dữ liệu bảng Orders 39
Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39
Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40
Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40
Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40
Bảng 3 35: Chi tiết dữ liệu bảng Products 41
Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41
Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii
RDBMS: Relational Database Management System SQL: Structured Query Language
XSRF/CSRF: Cross-Site Request Forgery
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…
Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài
“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],
“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…
1.2 MỤC TIÊU CỦA ĐỀ TÀI
Mục tiêu của đề tài bao gồm:
- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan
- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ
- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:
- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng
- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị
Phạm vi nghiên cứu của đề tài:
- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft
- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft
- Ngôn ngữ lập trình C#, Javascript
- Các framework hỗ trợ: Entity Framework, Identity Framework…
- Chưa xác thực email, số điện thoại
- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng
- Chưa cho khách hàng gửi video đánh giá sản phẩm
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website
Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về ASP.NET Core
ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]
ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]
Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:
- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu
- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web
- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng
Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer
Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]
Các thành phần và công nghệ của SQL Server bao gồm:
- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu
- Machine Learning Services: hỗ trợ tích hợp học máy
- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu
- Analysis Services: là nền tảng dữ liệu phân tích
- Reporting Services: cung cấp chức năng báo cáo
- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán
- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu
- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính
Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi
5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:
- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài
- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau
- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng
- Tuân thủ quy định bảo mật
THIẾT KẾ PHẨN MỀM
KHẢO SÁT
3.1.2 Xác định yêu cầu
MÔ HÌNH HÓA YÊU CẦU
3.2.2 Use case quản lí giỏ hàng
3.2.4 Use case xem lịch sử đơn hàng
3.2.5 Use case quản lí tài khoản
3.2.6 Use case quản lí danh mục
3.2.7 Use case quản lí tin tức
3.2.8 Use case quản lí sản phẩm
3.2.9 Use case quản lí đơn hàng
3.2.10 Use case quản lí đánh giá
THIẾT KẾ CƠ SỞ DỮ LIỆU
2.3.3 Ngăn chặn tấn công chuyển hướng mở
Chương 3 Thiết kế phần mềm
3.1.2 Xác định yêu cầu
3.2 Mô hình hóa yêu cầu
3.2.2 Use case quản lí giỏ hàng
3.2.4 Use case xem lịch sử đơn hàng
3.2.5 Use case quản lí tài khoản
3.2.6 Use case quản lí danh mục
3.2.7 Use case quản lí tin tức
3.2.8 Use case quản lí sản phẩm
3.2.9 Use case quản lí đơn hàng
3.2.10 Use case quản lí đánh giá
3.3 Lưu đồ thuật toán (flow chart)
3.3.1 Lưu đồ thuật toán đăng kí
3.3.2 Lưu đồ thuật toán đăng nhập
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 3.3.4 Lưu đồ thuật toán mua hàng
3.3.5 Lưu đồ thuật toán hủy đơn
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 3.4 Thiết kế cơ sở dữ liệu
3.4.1 Cơ sở dữ liệu iv
Chương 4 Thiết kế giao diện
4.2 Giao diện đăng kí và đăng nhập
4.3 Giao diện giới thiệu chung
4.5 Giao diện chi tiết kiến thức
4.8 Giao diện chi tiết sản phẩm
4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm
4.13 Giao diện quản lí tin tức
4.14 Giao diện quản lí đơn hàng
4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận
MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
1.2 MỤC TIÊU CỦA ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1.1 Giới thiệu về ASP.NET Core 3
2.3.3 Ngăn chặn tấn công chuyển hướng mở 7
CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi
3.1.2 Xác định yêu cầu 13
3.2 MÔ HÌNH HÓA YÊU CẦU 15
3.2.2 Use case quản lí giỏ hàng 17
3.2.4 Use case xem lịch sử mua hàng 19
3.2.5 Use case quản lí tài khoản 20
3.2.6 Use case quản lí danh mục 21
3.2.7 Use case quản lí tin tức 22
3.2.8 Use case quản lí sản phẩm 23
3.2.9 Use case quản lí đơn hàng 24
3.2.10 Use case quản lí đánh giá 25
3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26
3.3.1 Lưu đồ thuật toán đăng kí 26
3.3.2 Lưu đồ thuật toán đăng nhập 27
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
3.3.4 Lưu đồ thuật toán mua hàng 29
3.3.5 Lưu đồ thuật toán hủy đơn 30
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33
CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42
4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii
4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44
4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46
4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49
4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52
4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53
4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53
4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54
4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54
TÀI LIỆU THAM KHẢO 56 viii
Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5
Hình 2 3: Cách sử dụng form trong FormTagHelper 6
Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6
Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6
Hình 2 10: Cách mã hóa trong Razor 9
Hình 2 11: Gọi phương thức mã hóa trong controller 9
Hình 2 12: Ví dụ mã hóa trong controller 9
Hình 2 13: Truy vấn sql ban đầu 10
Hình 2 14: Truy vấn sql sau khi bị tấn công 10
Hình 3 1: Giao diện website Locat 12
Hình 3 2: Giao diện website cây xinh 12
Hình 3 4: Use case tổng quát 15
Hình 3 5: Use case quản lí giỏ hàng 17
Hình 3 6: Use case đặt hàng 18
Hình 3 7: Use case xem lịch sử mua hàng 19
Hình 3 8: Use case quản lí tài khoản 20
Hình 3 9: Use case quản lí danh mục 21
Hình 3 10: Use case quản lí tin tức 22
Hình 3 11: Use case quản lí sản phẩm 23
Hình 3 12: Use case quản lí đơn hàng 24
Hình 3 13: Use case quản lí đánh giá 25
Hình 3 14: Lưu đồ thuật toán đăng kí 26
Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix
Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
Hình 3 17: Lưu đồ thuật toán mua hàng 29
Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30
Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31
Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
Hình 3 21: Cơ sở dữ liệu 33
Hình 4 1: Giao diện trang chủ 42
Hình 4 2: Giao diện đăng kí 43
Hình 4 3: Giao diện đăng nhập 43
Hình 4 4: Giao diện giới thiệu chung 44
Hình 4 5: Giao diện kiến thức 45
Hình 4 6: Giao diện chi tiết kiến thức 46
Hình 4 7: Giao diện liên hệ 47
Hình 4 8: Giao diện sản phẩm 48
Hình 4 9: Giao diện chi tiết sản phẩm 49
Hình 4 10: Giao diện giỏ hàng 50
Hình 4 11: Giao diện mua hàng 51
Hình 4 12: Giao diện xem lịch sử mua hàng 52
Hình 4 13: Giao diện quản lí sản phẩm 53
Hình 4 14: Giao diện quản lí tin tức 53
Hình 4 15: Giao diện quản lí đơn hàng 54
Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x
Bảng 3 1: Mô tả use case tổng quát 15
Bảng 3 2: Mô tả use case quản lí giỏ hàng 17
Bảng 3 3: Mô tả use case đặt hàng 18
Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19
Bảng 3 5: Mô tả use case quản lí tài khoản 20
Bảng 3 6: Mô tả use case quản lí danh mục 21
Bảng 3 7: Mô tả use case quản lí tin tức 22
Bảng 3 8: Mô tả use case quản lí sản phẩm 23
Bảng 3 9: Mô tả use case quản lí đơn hàng 24
Bảng 3 10: Mô tả use case quản lí đánh giá 25
Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33
Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33
Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34
Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34
Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34
Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34
Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35
Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35
Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36
Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36
Bảng 3 21: Chi tiết dữ liệu bảng Categories 36
Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36
Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37
Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37
Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37
Bảng 3 26: Chi tiết dữ liệu bảng Customers 38
Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38
Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi
Bảng 3 29: Chi tiết dữ liệu bảng Languages 39
Bảng 3 30: Chi tiết dữ liệu bảng Orders 39
Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39
Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40
Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40
Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40
Bảng 3 35: Chi tiết dữ liệu bảng Products 41
Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41
Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii
RDBMS: Relational Database Management System SQL: Structured Query Language
XSRF/CSRF: Cross-Site Request Forgery
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…
Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài
“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],
“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…
1.2 MỤC TIÊU CỦA ĐỀ TÀI
Mục tiêu của đề tài bao gồm:
- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan
- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ
- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:
- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng
- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị
Phạm vi nghiên cứu của đề tài:
- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft
- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft
- Ngôn ngữ lập trình C#, Javascript
- Các framework hỗ trợ: Entity Framework, Identity Framework…
- Chưa xác thực email, số điện thoại
- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng
- Chưa cho khách hàng gửi video đánh giá sản phẩm
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website
Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về ASP.NET Core
ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]
ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]
Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:
- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu
- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web
- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng
Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer
Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]
Các thành phần và công nghệ của SQL Server bao gồm:
- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu
- Machine Learning Services: hỗ trợ tích hợp học máy
- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu
- Analysis Services: là nền tảng dữ liệu phân tích
- Reporting Services: cung cấp chức năng báo cáo
- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán
- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu
- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính
Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi
5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:
- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài
- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau
- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng
- Tuân thủ quy định bảo mật
THIẾT KẾ GIAO DIỆN
GIAO DIỆN GIỚI THIỆU CHUNG
4.5 Giao diện chi tiết kiến thức
4.8 Giao diện chi tiết sản phẩm
4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm
4.13 Giao diện quản lí tin tức
4.14 Giao diện quản lí đơn hàng
4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận
MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
1.2 MỤC TIÊU CỦA ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1.1 Giới thiệu về ASP.NET Core 3
2.3.3 Ngăn chặn tấn công chuyển hướng mở 7
CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi
3.1.2 Xác định yêu cầu 13
3.2 MÔ HÌNH HÓA YÊU CẦU 15
3.2.2 Use case quản lí giỏ hàng 17
3.2.4 Use case xem lịch sử mua hàng 19
3.2.5 Use case quản lí tài khoản 20
3.2.6 Use case quản lí danh mục 21
3.2.7 Use case quản lí tin tức 22
3.2.8 Use case quản lí sản phẩm 23
3.2.9 Use case quản lí đơn hàng 24
3.2.10 Use case quản lí đánh giá 25
3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26
3.3.1 Lưu đồ thuật toán đăng kí 26
3.3.2 Lưu đồ thuật toán đăng nhập 27
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
3.3.4 Lưu đồ thuật toán mua hàng 29
3.3.5 Lưu đồ thuật toán hủy đơn 30
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33
CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42
4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii
4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44
4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46
4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49
4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52
4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53
4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53
4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54
4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54
TÀI LIỆU THAM KHẢO 56 viii
Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5
Hình 2 3: Cách sử dụng form trong FormTagHelper 6
Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6
Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6
Hình 2 10: Cách mã hóa trong Razor 9
Hình 2 11: Gọi phương thức mã hóa trong controller 9
Hình 2 12: Ví dụ mã hóa trong controller 9
Hình 2 13: Truy vấn sql ban đầu 10
Hình 2 14: Truy vấn sql sau khi bị tấn công 10
Hình 3 1: Giao diện website Locat 12
Hình 3 2: Giao diện website cây xinh 12
Hình 3 4: Use case tổng quát 15
Hình 3 5: Use case quản lí giỏ hàng 17
Hình 3 6: Use case đặt hàng 18
Hình 3 7: Use case xem lịch sử mua hàng 19
Hình 3 8: Use case quản lí tài khoản 20
Hình 3 9: Use case quản lí danh mục 21
Hình 3 10: Use case quản lí tin tức 22
Hình 3 11: Use case quản lí sản phẩm 23
Hình 3 12: Use case quản lí đơn hàng 24
Hình 3 13: Use case quản lí đánh giá 25
Hình 3 14: Lưu đồ thuật toán đăng kí 26
Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix
Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
Hình 3 17: Lưu đồ thuật toán mua hàng 29
Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30
Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31
Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
Hình 3 21: Cơ sở dữ liệu 33
Hình 4 1: Giao diện trang chủ 42
Hình 4 2: Giao diện đăng kí 43
Hình 4 3: Giao diện đăng nhập 43
Hình 4 4: Giao diện giới thiệu chung 44
Hình 4 5: Giao diện kiến thức 45
Hình 4 6: Giao diện chi tiết kiến thức 46
Hình 4 7: Giao diện liên hệ 47
Hình 4 8: Giao diện sản phẩm 48
Hình 4 9: Giao diện chi tiết sản phẩm 49
Hình 4 10: Giao diện giỏ hàng 50
Hình 4 11: Giao diện mua hàng 51
Hình 4 12: Giao diện xem lịch sử mua hàng 52
Hình 4 13: Giao diện quản lí sản phẩm 53
Hình 4 14: Giao diện quản lí tin tức 53
Hình 4 15: Giao diện quản lí đơn hàng 54
Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x
Bảng 3 1: Mô tả use case tổng quát 15
Bảng 3 2: Mô tả use case quản lí giỏ hàng 17
Bảng 3 3: Mô tả use case đặt hàng 18
Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19
Bảng 3 5: Mô tả use case quản lí tài khoản 20
Bảng 3 6: Mô tả use case quản lí danh mục 21
Bảng 3 7: Mô tả use case quản lí tin tức 22
Bảng 3 8: Mô tả use case quản lí sản phẩm 23
Bảng 3 9: Mô tả use case quản lí đơn hàng 24
Bảng 3 10: Mô tả use case quản lí đánh giá 25
Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33
Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33
Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34
Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34
Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34
Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34
Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35
Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35
Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36
Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36
Bảng 3 21: Chi tiết dữ liệu bảng Categories 36
Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36
Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37
Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37
Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37
Bảng 3 26: Chi tiết dữ liệu bảng Customers 38
Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38
Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi
Bảng 3 29: Chi tiết dữ liệu bảng Languages 39
Bảng 3 30: Chi tiết dữ liệu bảng Orders 39
Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39
Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40
Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40
Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40
Bảng 3 35: Chi tiết dữ liệu bảng Products 41
Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41
Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii
RDBMS: Relational Database Management System SQL: Structured Query Language
XSRF/CSRF: Cross-Site Request Forgery
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…
Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài
“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],
“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…
1.2 MỤC TIÊU CỦA ĐỀ TÀI
Mục tiêu của đề tài bao gồm:
- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan
- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ
- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:
- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng
- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị
Phạm vi nghiên cứu của đề tài:
- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft
- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft
- Ngôn ngữ lập trình C#, Javascript
- Các framework hỗ trợ: Entity Framework, Identity Framework…
- Chưa xác thực email, số điện thoại
- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng
- Chưa cho khách hàng gửi video đánh giá sản phẩm
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website
Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về ASP.NET Core
ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]
ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]
Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:
- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu
- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web
- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng
Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer
Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]
Các thành phần và công nghệ của SQL Server bao gồm:
- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu
- Machine Learning Services: hỗ trợ tích hợp học máy
- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu
- Analysis Services: là nền tảng dữ liệu phân tích
- Reporting Services: cung cấp chức năng báo cáo
- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán
- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu
- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính
Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi
5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:
- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài
- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau
- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng
- Tuân thủ quy định bảo mật
GIAO DIỆN SẢN PHẨM
4.8 Giao diện chi tiết sản phẩm
4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm
4.13 Giao diện quản lí tin tức
4.14 Giao diện quản lí đơn hàng
4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận
MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
1.2 MỤC TIÊU CỦA ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1.1 Giới thiệu về ASP.NET Core 3
2.3.3 Ngăn chặn tấn công chuyển hướng mở 7
CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi
3.1.2 Xác định yêu cầu 13
3.2 MÔ HÌNH HÓA YÊU CẦU 15
3.2.2 Use case quản lí giỏ hàng 17
3.2.4 Use case xem lịch sử mua hàng 19
3.2.5 Use case quản lí tài khoản 20
3.2.6 Use case quản lí danh mục 21
3.2.7 Use case quản lí tin tức 22
3.2.8 Use case quản lí sản phẩm 23
3.2.9 Use case quản lí đơn hàng 24
3.2.10 Use case quản lí đánh giá 25
3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26
3.3.1 Lưu đồ thuật toán đăng kí 26
3.3.2 Lưu đồ thuật toán đăng nhập 27
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
3.3.4 Lưu đồ thuật toán mua hàng 29
3.3.5 Lưu đồ thuật toán hủy đơn 30
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33
CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42
4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii
4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44
4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46
4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49
4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52
4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53
4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53
4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54
4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54
TÀI LIỆU THAM KHẢO 56 viii
Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5
Hình 2 3: Cách sử dụng form trong FormTagHelper 6
Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6
Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6
Hình 2 10: Cách mã hóa trong Razor 9
Hình 2 11: Gọi phương thức mã hóa trong controller 9
Hình 2 12: Ví dụ mã hóa trong controller 9
Hình 2 13: Truy vấn sql ban đầu 10
Hình 2 14: Truy vấn sql sau khi bị tấn công 10
Hình 3 1: Giao diện website Locat 12
Hình 3 2: Giao diện website cây xinh 12
Hình 3 4: Use case tổng quát 15
Hình 3 5: Use case quản lí giỏ hàng 17
Hình 3 6: Use case đặt hàng 18
Hình 3 7: Use case xem lịch sử mua hàng 19
Hình 3 8: Use case quản lí tài khoản 20
Hình 3 9: Use case quản lí danh mục 21
Hình 3 10: Use case quản lí tin tức 22
Hình 3 11: Use case quản lí sản phẩm 23
Hình 3 12: Use case quản lí đơn hàng 24
Hình 3 13: Use case quản lí đánh giá 25
Hình 3 14: Lưu đồ thuật toán đăng kí 26
Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix
Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
Hình 3 17: Lưu đồ thuật toán mua hàng 29
Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30
Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31
Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
Hình 3 21: Cơ sở dữ liệu 33
Hình 4 1: Giao diện trang chủ 42
Hình 4 2: Giao diện đăng kí 43
Hình 4 3: Giao diện đăng nhập 43
Hình 4 4: Giao diện giới thiệu chung 44
Hình 4 5: Giao diện kiến thức 45
Hình 4 6: Giao diện chi tiết kiến thức 46
Hình 4 7: Giao diện liên hệ 47
Hình 4 8: Giao diện sản phẩm 48
Hình 4 9: Giao diện chi tiết sản phẩm 49
Hình 4 10: Giao diện giỏ hàng 50
Hình 4 11: Giao diện mua hàng 51
Hình 4 12: Giao diện xem lịch sử mua hàng 52
Hình 4 13: Giao diện quản lí sản phẩm 53
Hình 4 14: Giao diện quản lí tin tức 53
Hình 4 15: Giao diện quản lí đơn hàng 54
Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x
Bảng 3 1: Mô tả use case tổng quát 15
Bảng 3 2: Mô tả use case quản lí giỏ hàng 17
Bảng 3 3: Mô tả use case đặt hàng 18
Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19
Bảng 3 5: Mô tả use case quản lí tài khoản 20
Bảng 3 6: Mô tả use case quản lí danh mục 21
Bảng 3 7: Mô tả use case quản lí tin tức 22
Bảng 3 8: Mô tả use case quản lí sản phẩm 23
Bảng 3 9: Mô tả use case quản lí đơn hàng 24
Bảng 3 10: Mô tả use case quản lí đánh giá 25
Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33
Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33
Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34
Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34
Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34
Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34
Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35
Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35
Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36
Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36
Bảng 3 21: Chi tiết dữ liệu bảng Categories 36
Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36
Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37
Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37
Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37
Bảng 3 26: Chi tiết dữ liệu bảng Customers 38
Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38
Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi
Bảng 3 29: Chi tiết dữ liệu bảng Languages 39
Bảng 3 30: Chi tiết dữ liệu bảng Orders 39
Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39
Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40
Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40
Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40
Bảng 3 35: Chi tiết dữ liệu bảng Products 41
Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41
Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii
RDBMS: Relational Database Management System SQL: Structured Query Language
XSRF/CSRF: Cross-Site Request Forgery
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…
Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài
“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],
“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…
1.2 MỤC TIÊU CỦA ĐỀ TÀI
Mục tiêu của đề tài bao gồm:
- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan
- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ
- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:
- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng
- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị
Phạm vi nghiên cứu của đề tài:
- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft
- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft
- Ngôn ngữ lập trình C#, Javascript
- Các framework hỗ trợ: Entity Framework, Identity Framework…
- Chưa xác thực email, số điện thoại
- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng
- Chưa cho khách hàng gửi video đánh giá sản phẩm
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website
Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về ASP.NET Core
ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]
ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]
Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:
- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu
- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web
- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng
Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer
Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]
Các thành phần và công nghệ của SQL Server bao gồm:
- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu
- Machine Learning Services: hỗ trợ tích hợp học máy
- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu
- Analysis Services: là nền tảng dữ liệu phân tích
- Reporting Services: cung cấp chức năng báo cáo
- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán
- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu
- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính
Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi
5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:
- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài
- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau
- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng
- Tuân thủ quy định bảo mật
GIAO DIỆN MUA HÀNG
4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm
4.13 Giao diện quản lí tin tức
4.14 Giao diện quản lí đơn hàng
4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận
MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
1.2 MỤC TIÊU CỦA ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1.1 Giới thiệu về ASP.NET Core 3
2.3.3 Ngăn chặn tấn công chuyển hướng mở 7
CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi
3.1.2 Xác định yêu cầu 13
3.2 MÔ HÌNH HÓA YÊU CẦU 15
3.2.2 Use case quản lí giỏ hàng 17
3.2.4 Use case xem lịch sử mua hàng 19
3.2.5 Use case quản lí tài khoản 20
3.2.6 Use case quản lí danh mục 21
3.2.7 Use case quản lí tin tức 22
3.2.8 Use case quản lí sản phẩm 23
3.2.9 Use case quản lí đơn hàng 24
3.2.10 Use case quản lí đánh giá 25
3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26
3.3.1 Lưu đồ thuật toán đăng kí 26
3.3.2 Lưu đồ thuật toán đăng nhập 27
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
3.3.4 Lưu đồ thuật toán mua hàng 29
3.3.5 Lưu đồ thuật toán hủy đơn 30
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33
CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42
4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii
4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44
4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46
4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49
4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52
4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53
4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53
4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54
4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54
TÀI LIỆU THAM KHẢO 56 viii
Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5
Hình 2 3: Cách sử dụng form trong FormTagHelper 6
Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6
Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6
Hình 2 10: Cách mã hóa trong Razor 9
Hình 2 11: Gọi phương thức mã hóa trong controller 9
Hình 2 12: Ví dụ mã hóa trong controller 9
Hình 2 13: Truy vấn sql ban đầu 10
Hình 2 14: Truy vấn sql sau khi bị tấn công 10
Hình 3 1: Giao diện website Locat 12
Hình 3 2: Giao diện website cây xinh 12
Hình 3 4: Use case tổng quát 15
Hình 3 5: Use case quản lí giỏ hàng 17
Hình 3 6: Use case đặt hàng 18
Hình 3 7: Use case xem lịch sử mua hàng 19
Hình 3 8: Use case quản lí tài khoản 20
Hình 3 9: Use case quản lí danh mục 21
Hình 3 10: Use case quản lí tin tức 22
Hình 3 11: Use case quản lí sản phẩm 23
Hình 3 12: Use case quản lí đơn hàng 24
Hình 3 13: Use case quản lí đánh giá 25
Hình 3 14: Lưu đồ thuật toán đăng kí 26
Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix
Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
Hình 3 17: Lưu đồ thuật toán mua hàng 29
Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30
Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31
Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
Hình 3 21: Cơ sở dữ liệu 33
Hình 4 1: Giao diện trang chủ 42
Hình 4 2: Giao diện đăng kí 43
Hình 4 3: Giao diện đăng nhập 43
Hình 4 4: Giao diện giới thiệu chung 44
Hình 4 5: Giao diện kiến thức 45
Hình 4 6: Giao diện chi tiết kiến thức 46
Hình 4 7: Giao diện liên hệ 47
Hình 4 8: Giao diện sản phẩm 48
Hình 4 9: Giao diện chi tiết sản phẩm 49
Hình 4 10: Giao diện giỏ hàng 50
Hình 4 11: Giao diện mua hàng 51
Hình 4 12: Giao diện xem lịch sử mua hàng 52
Hình 4 13: Giao diện quản lí sản phẩm 53
Hình 4 14: Giao diện quản lí tin tức 53
Hình 4 15: Giao diện quản lí đơn hàng 54
Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x
Bảng 3 1: Mô tả use case tổng quát 15
Bảng 3 2: Mô tả use case quản lí giỏ hàng 17
Bảng 3 3: Mô tả use case đặt hàng 18
Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19
Bảng 3 5: Mô tả use case quản lí tài khoản 20
Bảng 3 6: Mô tả use case quản lí danh mục 21
Bảng 3 7: Mô tả use case quản lí tin tức 22
Bảng 3 8: Mô tả use case quản lí sản phẩm 23
Bảng 3 9: Mô tả use case quản lí đơn hàng 24
Bảng 3 10: Mô tả use case quản lí đánh giá 25
Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33
Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33
Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34
Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34
Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34
Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34
Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35
Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35
Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36
Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36
Bảng 3 21: Chi tiết dữ liệu bảng Categories 36
Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36
Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37
Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37
Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37
Bảng 3 26: Chi tiết dữ liệu bảng Customers 38
Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38
Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi
Bảng 3 29: Chi tiết dữ liệu bảng Languages 39
Bảng 3 30: Chi tiết dữ liệu bảng Orders 39
Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39
Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40
Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40
Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40
Bảng 3 35: Chi tiết dữ liệu bảng Products 41
Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41
Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii
RDBMS: Relational Database Management System SQL: Structured Query Language
XSRF/CSRF: Cross-Site Request Forgery
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…
Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài
“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],
“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…
1.2 MỤC TIÊU CỦA ĐỀ TÀI
Mục tiêu của đề tài bao gồm:
- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan
- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ
- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:
- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng
- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị
Phạm vi nghiên cứu của đề tài:
- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft
- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft
- Ngôn ngữ lập trình C#, Javascript
- Các framework hỗ trợ: Entity Framework, Identity Framework…
- Chưa xác thực email, số điện thoại
- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng
- Chưa cho khách hàng gửi video đánh giá sản phẩm
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website
Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về ASP.NET Core
ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]
ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]
Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:
- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu
- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web
- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng
Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer
Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]
Các thành phần và công nghệ của SQL Server bao gồm:
- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu
- Machine Learning Services: hỗ trợ tích hợp học máy
- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu
- Analysis Services: là nền tảng dữ liệu phân tích
- Reporting Services: cung cấp chức năng báo cáo
- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán
- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu
- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính
Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi
5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:
- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài
- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau
- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng
- Tuân thủ quy định bảo mật
GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY
MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
1.2 MỤC TIÊU CỦA ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1.1 Giới thiệu về ASP.NET Core 3
2.3.3 Ngăn chặn tấn công chuyển hướng mở 7
CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi
3.1.2 Xác định yêu cầu 13
3.2 MÔ HÌNH HÓA YÊU CẦU 15
3.2.2 Use case quản lí giỏ hàng 17
3.2.4 Use case xem lịch sử mua hàng 19
3.2.5 Use case quản lí tài khoản 20
3.2.6 Use case quản lí danh mục 21
3.2.7 Use case quản lí tin tức 22
3.2.8 Use case quản lí sản phẩm 23
3.2.9 Use case quản lí đơn hàng 24
3.2.10 Use case quản lí đánh giá 25
3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26
3.3.1 Lưu đồ thuật toán đăng kí 26
3.3.2 Lưu đồ thuật toán đăng nhập 27
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
3.3.4 Lưu đồ thuật toán mua hàng 29
3.3.5 Lưu đồ thuật toán hủy đơn 30
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33
CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42
4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii
4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44
4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46
4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49
4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52
4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53
4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53
4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54
4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54
TÀI LIỆU THAM KHẢO 56 viii
Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5
Hình 2 3: Cách sử dụng form trong FormTagHelper 6
Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6
Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6
Hình 2 10: Cách mã hóa trong Razor 9
Hình 2 11: Gọi phương thức mã hóa trong controller 9
Hình 2 12: Ví dụ mã hóa trong controller 9
Hình 2 13: Truy vấn sql ban đầu 10
Hình 2 14: Truy vấn sql sau khi bị tấn công 10
Hình 3 1: Giao diện website Locat 12
Hình 3 2: Giao diện website cây xinh 12
Hình 3 4: Use case tổng quát 15
Hình 3 5: Use case quản lí giỏ hàng 17
Hình 3 6: Use case đặt hàng 18
Hình 3 7: Use case xem lịch sử mua hàng 19
Hình 3 8: Use case quản lí tài khoản 20
Hình 3 9: Use case quản lí danh mục 21
Hình 3 10: Use case quản lí tin tức 22
Hình 3 11: Use case quản lí sản phẩm 23
Hình 3 12: Use case quản lí đơn hàng 24
Hình 3 13: Use case quản lí đánh giá 25
Hình 3 14: Lưu đồ thuật toán đăng kí 26
Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix
Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
Hình 3 17: Lưu đồ thuật toán mua hàng 29
Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30
Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31
Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
Hình 3 21: Cơ sở dữ liệu 33
Hình 4 1: Giao diện trang chủ 42
Hình 4 2: Giao diện đăng kí 43
Hình 4 3: Giao diện đăng nhập 43
Hình 4 4: Giao diện giới thiệu chung 44
Hình 4 5: Giao diện kiến thức 45
Hình 4 6: Giao diện chi tiết kiến thức 46
Hình 4 7: Giao diện liên hệ 47
Hình 4 8: Giao diện sản phẩm 48
Hình 4 9: Giao diện chi tiết sản phẩm 49
Hình 4 10: Giao diện giỏ hàng 50
Hình 4 11: Giao diện mua hàng 51
Hình 4 12: Giao diện xem lịch sử mua hàng 52
Hình 4 13: Giao diện quản lí sản phẩm 53
Hình 4 14: Giao diện quản lí tin tức 53
Hình 4 15: Giao diện quản lí đơn hàng 54
Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x
Bảng 3 1: Mô tả use case tổng quát 15
Bảng 3 2: Mô tả use case quản lí giỏ hàng 17
Bảng 3 3: Mô tả use case đặt hàng 18
Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19
Bảng 3 5: Mô tả use case quản lí tài khoản 20
Bảng 3 6: Mô tả use case quản lí danh mục 21
Bảng 3 7: Mô tả use case quản lí tin tức 22
Bảng 3 8: Mô tả use case quản lí sản phẩm 23
Bảng 3 9: Mô tả use case quản lí đơn hàng 24
Bảng 3 10: Mô tả use case quản lí đánh giá 25
Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33
Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33
Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34
Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34
Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34
Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34
Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35
Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35
Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36
Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36
Bảng 3 21: Chi tiết dữ liệu bảng Categories 36
Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36
Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37
Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37
Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37
Bảng 3 26: Chi tiết dữ liệu bảng Customers 38
Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38
Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi
Bảng 3 29: Chi tiết dữ liệu bảng Languages 39
Bảng 3 30: Chi tiết dữ liệu bảng Orders 39
Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39
Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40
Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40
Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40
Bảng 3 35: Chi tiết dữ liệu bảng Products 41
Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41
Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii
RDBMS: Relational Database Management System SQL: Structured Query Language
XSRF/CSRF: Cross-Site Request Forgery
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…
Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài
“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],
“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…
1.2 MỤC TIÊU CỦA ĐỀ TÀI
Mục tiêu của đề tài bao gồm:
- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan
- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ
- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:
- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng
- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị
Phạm vi nghiên cứu của đề tài:
- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft
- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft
- Ngôn ngữ lập trình C#, Javascript
- Các framework hỗ trợ: Entity Framework, Identity Framework…
- Chưa xác thực email, số điện thoại
- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng
- Chưa cho khách hàng gửi video đánh giá sản phẩm
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website
Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về ASP.NET Core
ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]
ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]
Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:
- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu
- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web
- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng
Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer
Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]
Các thành phần và công nghệ của SQL Server bao gồm:
- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu
- Machine Learning Services: hỗ trợ tích hợp học máy
- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu
- Analysis Services: là nền tảng dữ liệu phân tích
- Reporting Services: cung cấp chức năng báo cáo
- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán
- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu
- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính
Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi
5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:
- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài
- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau
- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng
- Tuân thủ quy định bảo mật
KẾT LUẬN
HƯỚNG PHÁT TRIỂN
MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
1.2 MỤC TIÊU CỦA ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1.1 Giới thiệu về ASP.NET Core 3
2.3.3 Ngăn chặn tấn công chuyển hướng mở 7
CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi
3.1.2 Xác định yêu cầu 13
3.2 MÔ HÌNH HÓA YÊU CẦU 15
3.2.2 Use case quản lí giỏ hàng 17
3.2.4 Use case xem lịch sử mua hàng 19
3.2.5 Use case quản lí tài khoản 20
3.2.6 Use case quản lí danh mục 21
3.2.7 Use case quản lí tin tức 22
3.2.8 Use case quản lí sản phẩm 23
3.2.9 Use case quản lí đơn hàng 24
3.2.10 Use case quản lí đánh giá 25
3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26
3.3.1 Lưu đồ thuật toán đăng kí 26
3.3.2 Lưu đồ thuật toán đăng nhập 27
3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
3.3.4 Lưu đồ thuật toán mua hàng 29
3.3.5 Lưu đồ thuật toán hủy đơn 30
3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31
3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33
CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42
4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii
4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44
4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46
4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49
4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52
4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53
4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53
4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54
4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54
TÀI LIỆU THAM KHẢO 56 viii
Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5
Hình 2 3: Cách sử dụng form trong FormTagHelper 6
Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6
Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6
Hình 2 10: Cách mã hóa trong Razor 9
Hình 2 11: Gọi phương thức mã hóa trong controller 9
Hình 2 12: Ví dụ mã hóa trong controller 9
Hình 2 13: Truy vấn sql ban đầu 10
Hình 2 14: Truy vấn sql sau khi bị tấn công 10
Hình 3 1: Giao diện website Locat 12
Hình 3 2: Giao diện website cây xinh 12
Hình 3 4: Use case tổng quát 15
Hình 3 5: Use case quản lí giỏ hàng 17
Hình 3 6: Use case đặt hàng 18
Hình 3 7: Use case xem lịch sử mua hàng 19
Hình 3 8: Use case quản lí tài khoản 20
Hình 3 9: Use case quản lí danh mục 21
Hình 3 10: Use case quản lí tin tức 22
Hình 3 11: Use case quản lí sản phẩm 23
Hình 3 12: Use case quản lí đơn hàng 24
Hình 3 13: Use case quản lí đánh giá 25
Hình 3 14: Lưu đồ thuật toán đăng kí 26
Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix
Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28
Hình 3 17: Lưu đồ thuật toán mua hàng 29
Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30
Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31
Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32
Hình 3 21: Cơ sở dữ liệu 33
Hình 4 1: Giao diện trang chủ 42
Hình 4 2: Giao diện đăng kí 43
Hình 4 3: Giao diện đăng nhập 43
Hình 4 4: Giao diện giới thiệu chung 44
Hình 4 5: Giao diện kiến thức 45
Hình 4 6: Giao diện chi tiết kiến thức 46
Hình 4 7: Giao diện liên hệ 47
Hình 4 8: Giao diện sản phẩm 48
Hình 4 9: Giao diện chi tiết sản phẩm 49
Hình 4 10: Giao diện giỏ hàng 50
Hình 4 11: Giao diện mua hàng 51
Hình 4 12: Giao diện xem lịch sử mua hàng 52
Hình 4 13: Giao diện quản lí sản phẩm 53
Hình 4 14: Giao diện quản lí tin tức 53
Hình 4 15: Giao diện quản lí đơn hàng 54
Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x
Bảng 3 1: Mô tả use case tổng quát 15
Bảng 3 2: Mô tả use case quản lí giỏ hàng 17
Bảng 3 3: Mô tả use case đặt hàng 18
Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19
Bảng 3 5: Mô tả use case quản lí tài khoản 20
Bảng 3 6: Mô tả use case quản lí danh mục 21
Bảng 3 7: Mô tả use case quản lí tin tức 22
Bảng 3 8: Mô tả use case quản lí sản phẩm 23
Bảng 3 9: Mô tả use case quản lí đơn hàng 24
Bảng 3 10: Mô tả use case quản lí đánh giá 25
Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33
Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33
Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34
Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34
Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34
Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34
Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35
Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35
Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36
Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36
Bảng 3 21: Chi tiết dữ liệu bảng Categories 36
Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36
Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37
Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37
Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37
Bảng 3 26: Chi tiết dữ liệu bảng Customers 38
Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38
Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi
Bảng 3 29: Chi tiết dữ liệu bảng Languages 39
Bảng 3 30: Chi tiết dữ liệu bảng Orders 39
Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39
Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40
Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40
Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40
Bảng 3 35: Chi tiết dữ liệu bảng Products 41
Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41
Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii
RDBMS: Relational Database Management System SQL: Structured Query Language
XSRF/CSRF: Cross-Site Request Forgery
1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…
Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài
“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],
“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…
1.2 MỤC TIÊU CỦA ĐỀ TÀI
Mục tiêu của đề tài bao gồm:
- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan
- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ
- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:
- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng
- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị
Phạm vi nghiên cứu của đề tài:
- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft
- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft
- Ngôn ngữ lập trình C#, Javascript
- Các framework hỗ trợ: Entity Framework, Identity Framework…
- Chưa xác thực email, số điện thoại
- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng
- Chưa cho khách hàng gửi video đánh giá sản phẩm
1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website
Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về ASP.NET Core
ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]
ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]
Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:
- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu
- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web
- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng
Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer
Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]
Các thành phần và công nghệ của SQL Server bao gồm:
- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu
- Machine Learning Services: hỗ trợ tích hợp học máy
- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu
- Analysis Services: là nền tảng dữ liệu phân tích
- Reporting Services: cung cấp chức năng báo cáo
- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán
- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu
- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính
Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi
5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:
- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài
- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau
- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng
- Tuân thủ quy định bảo mật