Đồ án Nghiên cứu các vấn đề bảo mật trong xây dựng ứng dụng thương mại điện tử và thanh toán trực tuyến

LỜI MỞ ĐẦU Cùng với sự lớn mạnh của Internet, việc mua bán hàng hóa và dịch vụ thông qua Internet đã xuất hiện, đó chính là “Thương mại điện tử”. Tuy mới xuất hiện và chỉ chiếm một tỷ trọng nhỏ trong thương mại song thương mại điện tử đã mang lại những lợi ích to lớn cho doanh nghiệp, chính phủ, người tiêu dùng và xã hội. Thương mại điện tử đã vượt ra khỏi lĩnh vực thương mại, ngày càng tác động đến các lĩnh vực khác và hứa hẹn mang lại những thay đổi to lớn và sâu sắc mọi mặt đời sống xã hội loài người. Thương mại điện tử ngày càng được sự quan tâm của chính phủ, doanh nghiệp và người tiêu dùng và đang trở thành một công cụ hữu hiệu trong quá trình toàn cầu hoá và trong xây dựng nền kinh tế số. Thât khó mà hình dung ra xã hội tương lai nếu không có thương mại điện tử. Bên cạnh đó, thương mại điện tử cũng đặt ra nhiều vấn đề cần phải giải quyết để khai thác các lợi ích của thương mại điện tử như vấn đề an toàn, an ninh cho các giao dịch trên mạng, các vấn đề về bảo vệ bí mật, tính riêng tư, cơ sở hạ tầng, các vấn đề về nhân lực, chuyển đổi mô hình kinh doanh, các vấn đề về quản lý, thay đổi tập quán, thói quen trong kinh doanh Trong đó vấn đề an toàn, an ninh cho các giao dịch trên mạng và các vấn đề về bảo vệ tính riêng tư, gọi chung là “các vấn đề bảo mật trong thương mại điện tử” có ý nghía sống còn đối với việc phát triển của thương mại điện tử. Đồ án “Nghiên cứu các vấn đề bảo mật trong xây dựng ứng dụng thương mại điện tử và thanh toán trực tuyến” sẽ giúp tìm hiểu rõ thêm các vấn đề bảo mật và cách để xây dựng một ứng dụng thương mại điện tử an toàn, đảm bảo lợi ích của doanh nghiệp và khách hàng. MỤC LỤC LỜI MỞ ĐẦU. 2 MỤC LỤC. 6 DANH MỤC CÁC BẢNG SƠ ĐỒ HÌNH 9 DANH MỤC CÁC CỤM TỪ VIẾT TẮT. 11 Chương 1.GIỚI THIỆU. 13 1.1. Thương mại điện tử và thanh toán điện tử 13 1.1.1. Thương mại điện tử. 13 1.1.2. Thanh toán trong thương mại điện tử. 18 1.2. Mục tiêu. 22 1.3. Phạm vi thực hiện. 22 Chương 2.CƠ SỞ LÝ THUYẾT. 23 2.1. Các thuật toán và kỹ thuật mã hóa sử dụng trong thanh toán điện tử và thương mại điện 23 2.1.1. Secure Socket Layer (SSL). 23 2.1.2. Hàm băm (Cryptographic hash function). 27 2.1.3. Mã hóa đối xứng (Symmetric Encryption). 31 2.1.4. Mã hóa khóa công khai 34 2.1.5. Chữ ký số (Digital Signature). 37 2.1.6. RSA 39 2.1.7. Hạ tầng khóa công khai (Public key Infrastructure). 42 2.1.8. SET (Secure Electronic Transaction). 48 2.2. Bảo mật Web. 51 2.2.1. Hypertext Transfer Protocol 51 2.2.2. Bảo mật Web Server. 56 2.2.3. Bảo mật ứng dụng Web. 65 2.2.4. Bảo mật Web Client 69 2.3. Cổng thanh toán điện tử 72 2.3.1. Cổng thanh toán điện tử (Payment Gateways). 72 2.3.2. Hoạt động của cổng thanh toán điện tử. 73 2.3.3. Bảo mật trong hệ thống cổng thanh toán điện tử. 75 2.4. Authorize.net. 77 2.4.1. Giới thiệu. 77 2.4.2. Hai phương thức tích hợp thanh toán điện tử qua Authorize.net 78 Chương 3.PHÂN TÍCH HỆ THỐNG 79 3.1. Yêu cầu hệ. 79 3.2. Ngôn ngữ và các kỹ thuật. 79 3.2.1. Ngôn ngữ lập trình và công cụ phát triển. 79 3.2.2. Hệ quản trị cơ sở dữ liệu. 79 3.2.3. Các kỹ thuật và công nghệ. 79 3.3. Các công việc cần giải quyết. 79 3.4. Các mô hình. 81 3.4.1. ERD 81 3.4.2. Mô hình Use Case. 82 3.4.3. Mô hình hoạt động (Activity). 84 3.4.4. Mô hình lớp ( Class). 88 Chương 4.HIỆN THỰC. 90 4.1. Bảo mật thông tin. 90 4.1.1. Bảo mật thông tin trên URL. 90 4.1.2. Bảo mật thông tin thiết lập trong web.config. 90 4.1.3. Bảo mật thông tin thẻ tín dụng. 90 4.1.4. Bảo mật các thiết lập quan trọng. 91 4.1.5. Sử dụng SSL. 91 4.2. Sơ đồ trang Web. 92 4.2.1. Phần cho khách hàng. 92 4.2.2. Phần cho người quản trị 93 4.3. Một số màn hình. 94 4.3.1. Trang chủ. 94 4.3.2. Trang đăng ký. 94 4.3.3. Trang nhóm sản phẩm 95 4.3.4. Trang cập nhật giỏ hàng. 95 4.3.5. Trang nhập thông tin chuyển hàng. 96 4.3.6. Trang nhập thông tin hóa đơn. 96 4.3.7. Trang nhập thông tin thẻ tín dụng. 97 4.3.8. Xác nhận mua hàng. 97 4.3.9. Trang quản lý sản phẩm 98 4.3.10 . Trang quản lý nhóm sản phẩm 98 4.3.11 Trang quản lý hóa đơn. 99 4.3.12 . Trang quản lý nhân viên. 99 4.3.13 Trang quản lý nhóm và quyền nhân viên. 99 4.3.14 Trang quản lý thiết lập hệ thống. 100 Chương 5.NHẬN XÉT ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN. 101 5.1. Nhận xét đánh giá. 101 5.2. Hướng phát triển. 101 PHỤ LỤC. 103 1. Thiết lập chứng chỉ SSL của Verisign. 103 1.1. Các bước thực hiện. 103 1.2. Chuẩn bị 103 1.3. Thực hiện. 103 2. Hàm băm và mã hóa đối 127 DANH MỤC TÀI LIỆU THAM KHẢO 128

doc128 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2976 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu các vấn đề bảo mật trong xây dựng ứng dụng thương mại điện tử và thanh toán trực tuyến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
, hoặc application/pdf…) . Ví dụ về http headers của vietnamnet.vn: Hình 2.16 Ví dụ HTTP header của vietnamnet.vn Dòng đầu tiên của một message gửi thông tin yêu cầu đến máy chủ là request-line, chỉ ra phương thức(method), một URI, và phiên bản HTTP mà máy khách đang sử dụng. Dòng đầu tiên trả về của một message từ máy chủ là status line, chứa thông tin về phiên bản HTTP mà máy chủ sử dụng, status code (mã trạng thái) và reason phrase. Status code là một dãy số gồm 3 chữ số chỉ ra kết quả mà máy chủ đã đáp ứng yêu cầu được gửi lên từ máy khách. Reason phrase là một dòng thông báo ngắn của status code. Ví dụ một máy máy khách yêu cầu một tài liệu mà không có trên máy chủ thì máy chủ sẽ trả về “404 Not Found.”. Nếu tài liệu đó có trên máy chủ, nhưng máy khách phải được chứng thực mới xem được thì máy chủ sẽ trả về “401 Unauthorized.”. Trao đổi thông tin nhạy cảm HTTP header mang rất nhiều thông tin về client hoặc máy chủ, điều này chứa đựng những nguy hiểm tiềm tàn. Ví dụ như thông tin header như thông tin trả về từ máy chủ chứa phiên bản của máy chủ như hình dưới đây: Hình 2.17 Thông tin máy chủ trong HTTP Header Điều này có thể rất nguy hiểm nếu như phần mềm của máy chủ này đang tồn tại một lỗ hổng bảo mật, điều đó có thể tạo cơ hội cho hacker khai thác lỗ hổng bảo mật này và tấn công vào máy chủ. Acccept trong header yêu cầu của máy khách gửi lên máy chủ cũng tiết lộ thêm nhiều điều về người dùng như: Accept-Language, Accept-Encoding… Giống như thông tin header của máy chủ có thể chứa thông tin về máy chủ, trường Form của client header cũng có thể chứa thông tin về địa chỉ email của người dùng. Rõ ràng, nếu người dùng lướt web nặc danh, thông tin này không nên được gửi đi. Trường Referer trong header yêu cầu gửi lên máy chủ được máy khách sử dụng để chỉ ra địa chỉ (URI) của tài liệu (hoặc những thành phần trong tài liệu) mà từ đó yêu cầu URI thu được. Điều này cho phép máy chủ tạo ra danh sách những liên kết được trả về phục vụ cho mục đích ghi lại thông tin (log), xử lý các liên kết bị lỗi... Referer header có thể bị lạm dụng, thông tin có thể được sử dụng để đếm số người yêu cầu tài nguyên đó trên máy chủ, từ đó có thể sử dụng thông tin này cho nhiều mục đích khác nhau như để phân tích hành vi của người dùng phục vụ cho việc quảng cáo… và điều đó vi phạm quyền riêng tư của người dùng. Hình 2.18 Ví dụ Referer trong HTTP Header Vấn đề bảo mật trong Proxy và Cache Hình 2.19 Proxy cache Proxy là một máy tính trung gian giữa máy khách và máy chủ. Truy cập thông qua proxy có thể gặp rất nhiều vấn đề nghiêm trọng về bảo mật cũng như tính riêng tư (privacy). Proxy có thể truy cập vào rất nhiều những phần thông tin quan trọng, những thông tin cá nhân hoặc tổ chức, quyền sở hữu... Những proxy không quan tâm đến các vấn đề bảo mật có thể là những mối nguy hại tiềm tàn vì proxy có thể là mục tiêu cho các cuộc tấn công bảo mật. Người quản trị proxy nên thiết lập hệ thống để bảo vệ hệ thống mà proxy đang chạy, cũng như bảo vệ bất cứ hệ thống nào chứa đựng hoặc chuyển qua lại các thông tin nhạy cảm. Hơn nữa, thông tin trong bản ghi (log) mà proxy thu thập có thể chứa rất nhiều những thông tin nhạy cảm và riêng tư, chính vì thế các thông tin này cần được bảo mật cẩn thận. HTTP cache là các thông tin, tập tin lưu tạm trên máy khách, proxy hoặc gateway dùng để chứa các dữ liệu được trả về từ phía máy chủ để giúp giảm bớt đường truyền sử dụng và tăng thời gian hiển thị trang web. Trường Cache-Control trong header trả về từ máy chủ quy định xem máy khách có thể được lưu lại cache hay không, một số thông số khác khác quy định cache có thể được sử dụng như thế nào. Mặc định, dữ liệu trả về từ phương thức POST không được lưu lại (no cacheable). Bảo mật giao dịch Web Trong quá trình sử dụng HyperText Transport Protocol cho các dịch vụ cá nhân hay thương mại thì những thông tin cá nhân hay nhạy cảm đòi hỏi phải được phát triển trên một phiên bản an toàn bao gồm tính riêng tư và xác thực. Bảo mật các giao dịch trên web (hay bảo mật HTTP message) cần phải tuân thủ theo các yêu cầu bảo mật: Đảm bảo tính bảo mật (confidentiality) trong quá trình gửi và nhận yêu cầu. Trong quá trình gửi yêu cầu và nhận các yêu cầu, các thông tin cần phải được bảo mật, đặc biệt là các thông tin nhạy cảm, đồng thời địa chỉ (URI) được yêu cầu cũng phải được bảo mật và tránh trường hợp các thông tin trong form hoặc các thông tin người dùng nhập hiển thị trên URI. Xác thực dữ liệu gốc (authentication) trong quá trình gửi và nhận yêu cầu. Đảm bảo tính toàn vẹn (integrity) của dữ liệu. Đảm bảo tính “nonrepudiation” của dữ liệu. Đảm bảo tính cập nhật (freshness) của dữ liệu. Ngoài ra, cơ chế bảo mật trên HTTP phải dễ dàng tích hợp với các tính năng khác của HTTP. Để đảm bảo được các yêu cầu bảo mật trên đây có thể sử dụng các phương thức bảo mật sau: Sử dụng các giao thức bảo mật bên dưới tầng HTTP để tạo ra một kênh truyền dữ liệu an toàn như là SSL hoặc TSL. Sử dụng giao thức bảo mật PGP (Pretty Good Privacy), S/MIME (Secure / Multipurpose Internet Mail Extensions) để bảo mật HTTP message. Sử dụng các bản mở rộng cho HTTP như S-HTTP, PEP (Protocol Extension Protocol). Hiện tại phương sử dụng SSL đang được sử dụng rộng rãi trên các giao dịch trên nền web vì tính bảo mật cao và tiện dụng. Bảo mật Web Server Các vấn đề bảo mật trên máy chủ Sự phát triển của Internet và thương mại điện tử đã có bước tăng trưởng rất nhanh chóng trong thời gian gần đây, kèm theo đó là sự phát triển của tin tặc và các nguy cơ bảo mật gia tăng. Rất nhiều những tổ chức vận hành máy chủ nhưng không được bảo vệ để sẵn sàng chống lại các nguy cơ tấn công từ bên ngoài. Các máy chủ web luôn là mục tiêu tấn công trên mạng của các tin tặc. Bởi vậy, việc thiết lập và bảo vệ các thông tin trên máy chủ luôn là một vấn đề cấp bách, đặt biệt là các hệ thống máy chủ thương mại điện tử. Có rất nhiều những kỹ thuật giúp kẻ tấn công có thể chạy các đoạn mã lệnh nguy hiểm trên máy của nạn nhân, các kỹ thuật này bao gồm: Khai thác từ xa: có rất nhiều lỗ hổng bảo mật tồn tại trong rất nhiều hệ thống máy tính, làm cho kẻ tấn công có khả năng làm hạy, xâm nhập hay tắt hệ thống mà không cần phản đăng nhập vào hệ thống máy tính. Các chương trình có hại (Malicious programs): một cách tấn công khác là bằng cách nào đó kẻ tấn công cài được vào hệ thống một chương trình có hại. Chương trình này có thể chạy một vài dịch vụ ẩn để kẻ tấn công có thể điều khiển được hệ thống từ xa, các chương trình này được gọi là “cửa sau” (back door) vì giúp cho kẻ tấn công có thể dễ dàng xâm nhập vào hệ thống và tránh được các phương pháp bảo mật. “Trojan Horse” dùng để gọi những chương trình có vẻ như là cung cấp một vài chức năng nào đó, nhưng thật sự nó là các phần mềm độc hại, giống như những con ngựa gỗ mà người Hy Lạp đã sử dụng để tấn công thành Toy. Virus và sâu máy tính (worm) là những chương trình có thể tự động nhân bản, và lây lan qua các máy tính thông qua các tệp đính kèm trong thư điện tử hay lây lan độc lập qua mạng. Virus sửa đổi các chương trình trên máy tính bị lây nhiểm, và cũng có thể tạo ra cửa sau giúp kẻ tấn công kiểm soát máy tính. Trộm thông tin đăng nhập và kỹ thuật tấn công xã hội (social engineering): trong rất nhiều hệ thống máy tính, có thể tồn tại các lỗ hổng hay lỗi giúp kẻ tấn công có thể sử dụng các tài khoản bình thường giống như tài khoản của người quản trị hệ thống (administrator). Hoặc kẻ tấn công sẽ sử dụng tài khoản có được để cài các phần mềm theo dõi hệ thống để từ đó lấy được thông tin đăng nhập của người quản trị hệ thống để thực hiện các mưu đồ xấu. Kẻ tấn công có thể sử dụng rất nhiều những kỹ thuật để ăn trộm thông tin đăng nhập của người dùng. Kẻ tấn công có thể cài các chương trình trên máy nạn nhân để theo dõi việc nhập thông tin thông qua bàn phím hay sử dụng các kỹ thuật lừa đảo để lấy thông tin đăng nhập. Ngoài ra kẻ tấn công cũng có thể tìm kiếm thông tin của nạn nhân trên internet hay các nguồn khác, từ đó phân tích các thông tin này để đoán ra thông tin đăng nhập của nạn nhân. Lừa đảo (phishing): lừa đảo là một trong những kỹ thuật tấn công xã hội (social engineering). Kẻ tấn công sử dụng thư điện tử hay các trang web giống các trang web nổi tiếng (lợi dụng các lỗi chính tả khi nhập địa chỉ trang web…) để lừa khách hàng cung cấp các thông tin đăng nhập và thông tin cá nhân liên quan. Ví dụ như kẻ tấn công gửi thư điện tử cho nạn nhân và thông báo là thẻ tín dụng của nạn nhân đã hết hạn sử dụng và nạn nhân cần click vào một địa chỉ mà thư điện tử cung cấp để làm một cái mới, tất nhiên địa chỉ mà thư điện tử cung cấp sẽ dẫn đến trang web giả mạo của kẻ tấn công. Bảo mật máy chủ Từ những vấn đề bảo mật trên cần phải có những phương pháp giúp bảo vệ hệ thống máy chủ và hạn chế tối đa các thiệt hại nếu có sự cố xảy ra. Các phương pháp giúp bảo vệ máy chủ web: Cài đặt phần mềm và các miếng vá Trước khi cài đặt hệ điều hành hay một phần mềm mới trên máy chủ, cần phải kiểm tra rằng đó là bản mới nhất để và chắc rằng đã có đầy đủ các bản vá lỗi. Nếu có thể được nên ngắt kết nối internet và bắt đầu cài đặt phần mềm, và chỉ nên kết nối lại internet khi quá trình cài đặt phần mềm và các miếng, các bản cập nhật đã hoàn thành. Trước khi cài đặt bất cứ phần mềm nào trên máy chủ, hay cài đặt hệ điều hành mới, phải luôn tạo một bản sao lưu lại hệ thống và cất nó vào một nơi an toàn. Điều này sẽ giúp khôi phục lại hệ thống một cách nhanh nhất và ít thiệt hại nhất trong trường hợp quá trình cài đặt xảy ra sự cố hay hệ thống bị tấn công. Tốt nhất là nên lưu trữ bản sao lưu vào đĩa CD, DVD, băng từ hay vài ổ cứng của một máy tính khác, và đem cất vào một nơi an toàn. Lưu lại thông tin trạng thái và các hoạt động (logging) Rất nhiều dịch vụ chạy trên máy chủ web cho phép ghi lại những hoạt động của nó (log). Những máy chủ web chạy hệ điều hành UNIX hay Windows cho phép cấu hình ghi lại các hoạt động của hệ thống xuống một tệp hay nhiều tệp tin, hoặc có thể gửi đến một máy tính khác trong mạng, gửi đến máy in hay các thiết bị khác. Những thông tin log sẽ trở nên vô giá khi phục hồi lại hệ thống từ những sự cố bảo mật. Thường chúng sẽ nói cho chúng ta biết các mà kẻ tấn công đã tấn công hệ thống, thậm chí có thể chúng cung cấp mang mối để tìm ra kẻ đã tấn công. Tệp tin log có thể được đệ trình như là bằng chứng lên toà án để kết tội kẻ tấn công nếu chúng được lưu lại điều đặn trong hệ thống. Nên thiết lập để lưu lại log của tất cả các máy chủ, và chắc rằng các thông tin này được kiểm tra một cách điều đặn. Người quản trị có thể viết ra một chương trình nhỏ để quét qua các tệp tin log mỗi ngày và lọc ra những thông tin, sự kiện mà người quản trị muốn biết hay các thông tin lỗi, hoặc cũng có thể dùng các chương trình phân tích tệp tin log. Một khi có những thông tin này rồi, người quản trị có thể dễ dàng hình dung các sự kiện đó xảy ra để từ đó tìm cách xử lý cho phù hợp. Tệp tin log cũng sẽ rất hữu dụng cho việc đo sức chụi đựng của hệ thống. Ví dụ, có thể thiết lập lưu lại những thông tin như: sự sử dụng kết nối ra bên ngoài và bên trong, hoạt động của CPU, RAM, dung lượng đĩa cứng. Những thông tin này sẽ rất hữu ích giúp xác định khi nào thì nên nâng cấp hệ thống. Bảo vệ tệp tin log là rất quan trọng. Nếu như một một người nào đó xâm nhập vào hệ thống, điều đầu tiên họ làm là sẽ tìm cách sửa lại tiệp tin log để xóa dấu vết xâm nhập của họ. Cách tốt nhất để bảo vệ các tệp tin log là xây dựng một máy chủ log an toàn sẽ thu thập thông tin log từ các máy khác trong mạng. Cũng cần có cơ chế chứng thực để bảo vệ tệp tin log để chỉ cho phép những người có quyền mới được xem. Sao lưu hệ thống đơn giản chỉ là cách lưu trữ lại toàn bộ hay một phần các tệp tin xuống băng từ hay các thiết bị lưu trữ khác. Đây là cách hiệu nhất để giúp khôi phục lại hệ thống nếu như có sự cố xảy ra. Sao lưu hệ thống có vai trò rất quan trọng trong bảo mật máy chủ: Giúp bảo vệ hệ thống trước các lỗi phần cứng hay các sự cố xóa nhầm tệp tin. Giúp bảo vệ trước những cuộc tấn công bởi vì những tệp bị xóa hay bị sữa đổi bởi kẻ tấn công có thể được khôi phục lại từ bản sao lưu. Giúp phát hiện mức độ phá hoại của kẻ tấn công bằng cách so sánh những tệp đang có trong hệ thống với những tệp được lưu trữ trong bản sao lưu. Sao lưu là một việc làm không khó, tuy nhiên cần phải tuân thủ một vài điều sau: Luôn kiểm tra lại bản sao lưu để đảm bảo rằng nó không bị hỏng và có thể khôi phục lại hệ thống đúng như lúc được sao lưu. Luôn mã hóa bản sao lưu bằng một mật khẩu an toàn, để trong trường hợp bản sao lưu bị đánh cắp thì dữ liệu được lưu trữ cũng không bị nguy hiểm. Và bản sao lưu cũng phải được lưu trữ ở những nơi đã được bảo vệ. Cẩn thận khi thực hiện việc sao lưu trong một mạng nội bộ. Thường trong mạng có một máy chủ phục vụ cho việc sao lưu hệ thống của các máy tính khác trong mạng, vì vậy nếu máy tính này bị tấn công thì những những hệ thống mà nó thực hiện sao lưu cũng sẽ gặp nguy hiểm. Sử dụng các công cụ bảo mật. Các công cụ bảo mật là các chương trình đặt biệt, giúp người quản trị hệ thống có thể ước lượng hay tăng khả năng bảo mật hệ thống. Nhiều công cụ bảo mật ngày nay được phát triển bởi các trường đại học hoặc những chuyên gia độc lập và được cung cấp rộng rãi trên mạng internet. Cũng có vài công cụ tốt được thương mại hóa. Có 5 loại công cụ nên được xem xét sử dụng trên hệ thống máy chủ: Công cụ quét những điểm yếu của hệ thống và báo cáo cho người quản trị (Snapshot tools). Ví dụ như trên hệ thống UNIX một công cụ sẽ gám xác tệp /etc/passwd để đảm bảo không cho phép ai ngoại trừ người quản trị có thể sửa đổi. Các chương trình này có thể quét hệ thống nhiều lần trong một khoảng thời gian ngắn, tùy theo thiết lập. Nên cẩn thận khi quản lý các báo cáo được xuất ra từ công cụ này, tốt nhất là nên lưu trữ ở một nơi an toàn và chỉ những người có quyền mới được xem, vì từ những thông tin này nếu lọt vào tay kẻ tấn công chúng có thể giúp tìm ra các lỗ hổng trong hệ thống một các dễ dàng. Công cụ giúp giám sát hệ thống và phát hiện những thay đổi không được phép trong hệ thống. Công cụ này rất quan trọng bởi vì điều đầu tiên mà kẻ tấn công làm khi xâm nhập được vào hệ thống là chỉnh sửa lại hệ thống để giúp chúng có thể dễ đang xâm nhập vào những lần sau hay xóa đi các chứng cớ xâm nhập. Giám sát các sự thay đổi không thể ngăn chặn sự tấn công, tuy nhiên nó giúp cảnh báo hệ thống đã bị làm hại. Hấu hết các cuộc tấn công không bị phát hiện trong một khoảng thời gian, công cụ phát hiện thay đổi là cách duy nhất giúp bạn phát hiện sự hiện diện của kẻ xâm nhập trong hệ thống để có những hành động thích hợp. Nếu như hệ thống có nhiều hơn một người quản trị, báo cáo thay đổi sẽ giúp giám xác các hoạt động của từng người. Công cụ giám sát mạng, giúp phát hiện những điểm yếu bảo mật trong mạng. Nên sử dụng một công cụ giúp tự động quét hệ thống mạng. Công cụ này giúp phát hiện những lỗi trong những chương trình mạng như gửi mail hay dịch vụ FPTD (File Transfer Protocol DAEMON). Công cụ giám sát hệ thống và mạng để phát hiện những cuộc tấn công đang được thực hiện. Hệ thống dò tìm xâm nhập (Intrusion detection system) viết tắt là IDS là phần mềm hay phần cứng giúp phát hiện những sự cố gắng không mong muốn để xâm nhập, thao tác hay cố gắng vô hiệu hóa hệ thống máy tính thông qua mạng, mà chủ yếu là qua mạng internet ở dạng những cuộc tấn công như sử dụng các phần mềm độc hại… Sử dụng các phần mềm quét virus để phát hiện virus và các phần mềm độc hại nhằm tránh hoạt động của chúng trên hệ thống có thể tạo các lỗ hổng cho kẻ tấn công xâm nhập vào hệ thống. Công cụ giúp lưu lại hoạt động của mạng để phục vụ cho sự phân tích sau này. Hệ thống dò tìm xâm nhập (IDS) giống như một hệ thống báo động tinh vi: IDS có những cảm biến và báo động, nếu như có một sự xâm nhập đi qua một trong chúng, IDS sẽ ghi nhận lại sự việc. Nhưng vấn đề với hệ thống IDS là chúng chỉ có thể ghi nhận lại những gì mà chúng đã được thiết lập để ghi nhận. Công cụ ghi lại nhật ký mạng lại tiếp cận theo một cách khác. Hệ thống sẽ lưu lại tất cả những thông tin được truyền qua mạng, và cho phép phân tích ngược lại. Trong trường hợp máy chủ bị tấn công hay các sự cố khác, những thông tin đó sẽ được phân tích để tìm ra nguyên nhân. Hệ thống này thường chạy trên máy tính có dung lượng ở cứng lớn. Hạn chế các nguy cơ bảo mật bằng cách hạn chế các dịch vụ Một trong những cách quan trọng để hạn chế hiểm họa đối với máy chủ là tối thiểu các dịch vụ không cần thiết trên máy chủ, bởi vì mỗi dịch vụ mạng tồn tại trong nó những rủi ro riêng. Bằng cách loại bỏ các dịch vụ không cần thiết, bạn đã loại bỏ được những nguy hiểm và lỗ hổng tiềm năng giúp kẻ tấn công có thể xâm nhập vào máy chủ. Những dịch vụ sau đây được khuyến khích loại bỏ hay vô hiệu hóa nếu như không có nhu cầu sử dụng: Tên dịch vụ Nguyên nhân Domain Name Service (DNS) Lỗi trong DNS có thể bị khai thác để làm hại máy chủ. Mail (SMTP, POP, IMAP,...) Những lỗi trong việc gửi mail và gửi tệp đính kèm có thể được sử dụng để tấn công máy chủ. Tốt nhất là nên chạy dịch vụ mail trên một máy chủ riêng. netstat, systat netstat và systat có thể tiết lộ thông tin thiết lập và trình trạng hệ thống. Tốt nhất là không nên cung cấp dịch vụ này. chargen, echo Dịch vụ này có thể được sử dụng để khởi chạy các chương trình điều khiển tấn công ghi dữ liệu hoặc tấn công từ chối dịch vụ. Nên vô hiệu hóa dịch vụ này. FTP Không nên chạy FPT nếu như bạn có thể. FPT tiêu chuẩn gửi thông tin tên đăng nhập và mật khẩu không được mã hóa. Mặc dù có thể sử dụng FTP với có chế “sao chép an toàn” (Secure Copy) viết tắt là SCP (sử dụng phương thức SSH (Secure Shell)) để thiết lập một kết nối an toàn. Nếu bạn bắt buộc phải sử dụng FTP thì chỉ nên sử dụng nó cho việc cập nhật máy chủ. Trong trường hợp phải sử dụng máy chủ FTP nặc danh, tốt nhất là nên chạy trên một máy tính riêng lẻ, và ít ra là với hệ thống tệp tin riêng biệt khác với máy chủ web. Telnet Không nên cho phép những sự đăng nhập tương tác vào máy chủ web cho bất cứ ai ngoại trừ người quản lý hệ thống (administrator). Nếu có thể, chỉ nên cho phép truy cập từ xa đã được bảo mật như SSH hay Kerberized. Nếu như phải sử dụng telnet không được bảo mật, thì nên sử dụng hệ thống mật mã dùng một lần như S/Key hay SecureID. Berkeley, những lệnh "r" (rlogin, rsh, rdist, ...) Những lệnh này sử dụng địa chỉ IP để chứng thực, vì vậy rất không an toàn vì IP có thể bị giả mạo. Nên sử dụng SSH hay SCP. Bảng 2.1 Những dịch vụ nên hạn chế trên máy chủ web Tường lửa (Firewall) Tường lửa là rào chắn được lập ra nhằm ngăn chặn người dùng mạng Internet truy cập các thông tin không mong muốn hay ngăn chặn người dùng từ bên ngoài truy nhập các thông tin bảo mật nằm trong mạng nội bộ. Tường lửa là một thiết bị phần cứng hay một phần mềm hoặc cả hai, hoạt động trong một môi trường máy tính nối mạng để ngăn chặn một số liên lạc bị cấm bởi chính sách an ninh của cá nhân hay tổ chức, việc này tương tự với hoạt động của các bức tường ngăn lửa trong các tòa nhà. Tường lửa được sử dụng để bảo vệ mạng cục bộ (LAN) khỏi các nguy cơ từ internet. Tường lửa cũng có thể được sử dụng để bảo vệ máy chủ web. Giống như mạng cục bộ, lợi ích lớn nhất của tường lửa trong việc bảo vệ máy chủ web là có thể điều khiển được những giao thức được máy chủ sử dụng. Ví dụ nếu như máy chủ chỉ đưa ra duy duy nhất dịch vụ HTTP, người quản trị có thể cấu hình để tường lửa chỉ cho phép các gói dữ liệu qua lại trên cổng 80. Nếu máy chủ web cần hỗ trợ HTTP trên SSL thì người quản trị có thể mở cổng 443. Trong trường hợp tồn tại những lỗ hổng trên máy chủ web, tường lửa sẽ giúp ngăn chặn kẻ tấn công sử dụng máy chủ web làm cơ sở để tấn công các máy tính khác trên mạng internet. Để đạt được sự bảo vệ tối đa, tường lửa cũng nên cô lập tường lửa của mạng nội bộ (xem hình bên dưới). Điều này giúp ngăn chặn kẻ tấn công trong trường hợp đã kiểm soát được máy chủ web sẽ sử dụng nó để tấn công vào mạng nội bộ. Hình 2.20 Thiết lập tường lửa bảo vệ máy chủ web Một trong những lợi ích quan trọng nữa trong việc sử dụng tường lửa để bảo vệ máy chủ web là có thể sử dụng tường lửa của mạng riêng ảo (VPN) để cập nhật an toàn nội dung của máy chủ web. Bảo mật ứng dụng Web Common Gateway Interface (CGI) CGI là giao thức tiêu chuẩn cho việc giao tiếp giữa máy chủ web và phần mềm bên ngoài viết bằng bất cứ ngôn ngữ nào. Khi máy khách yêu cầu một truy xuất vào một tệp tin CGI trên máy chủ web, máy chủ web sẽ không trả về nội dụng của tiệp này, mà sẽ gửi yêu cầu này qua một chương trình khác, chương trình này sẽ xử lý yêu cầu kết hợp với mã lệnh trong tệp tin CGI và trả về thông tin cho máy chủ web để máy chủ web trả về cho máy khách. Có thể hiểu CGI là một trình thông dịch các mã lệnh viết chứa trong các tệp tin đặt trên máy chủ. Hình 2.21 Quá trình xử lý yêu cầu của CGI CGI cũng cho phép dịch vụ web của bạn tương tác với các chương trình khác như cơ sở dữ liệu hay dịch vụ ứng dụng trên cùng hoặc không cùng máy chủ. Chính vì điều này, nếu bị tấn công, có thể gây ra sự mất mát to lớn. Vì thế, đây là một vài biện pháp an toàn nên tiến hành. Không cho phép chương trình CGI tải lên máy chủ từ Internet vì kẻ tấn công có thể sử dụng đặc quyền để gắn kèm chương trình phá hủy trong một thư mục, chỉ cần một trình duyệt để kích hoạt nó. Một chương trình CGI kiểu này có thể gắn những tệp tin hoặc thư mục trên máy chủ của bạn, làm thay đổi hoặc xóa những tệp tin có sẵn, sao chép và gửi thư điện tử cho kẻ tấn công toàn bộ đường dẫn của những thông tin bảo mật. Bất cứ chương trình CGI nào cũng nên giới hạn với ít đặc quyền nhất để khi một chương trình không hợp lệ nào đó được sử dụng, có thể hạn chế được những tổn hại nó gây ra. Tương tự, CGI cũng không nên được phép tải về từ máy chủ về vì kẻ xấu có thể lấy cắp và phân tích nó, từ đó hắn có thể tìm ra những lỗ hổng an ninh nghiêm trọng. Nếu bạn sử dụng chương trình CGI kết hợp, đảm bảo rằng mã nguồn gốc không còn nằm trên máy chủ nữa. Nếu dùng CGI nguyên bản (đơn giản hơn và thường dễ viết hơn nhưng cần nhiều tài nguyên hệ thống), trình thông dịch nên ở khác nguồn với code. Như vậy sẽ hạn chế được quyền hạn dành cho hai đối tượng khác nhau. Bảo mật các trường dữ liệu, trường dữ liệu ẩn Một trong những lý do khiến khó để phát triển một ứng dụng web an toàn là cấu trúc của ứng dụng web. Khi phát triển một ứng dụng web, người phát triển viết mã lệnh để chạy trên máy chủ web, và một phần sẽ được tải về và chạy trên trình duyệt của người dùng. Người phát triển sẽ mất khá nhiều thời gian để đảm bảo rằng hai phần này sẽ hoạt động một cách trơn tru với nhau. Ví dụ như một điều quan trọng là phải đảm bảo tên các trường dữ liệu được tải xuống trình duyệt của người dùng sẽ chính xác hoàn toàn với các tên trường dữ liệu trong kịch bản trên máy chủ. Và người phát triển sẽ phải giành rất nhiều thời gian để đảm bảo rằng các mã HTML, javascript và các mã khác được tải xuống trình duyệt của người dùng sẽ hoạt động tôt. Cơ chế hiện tại của cấu trúc ứng dụng web là các phần code được viết sẽ chạy trên máy chủ web và tạo ra mã HTML để trả về cho trình duyệt của người dùng. Ở trình duyệt, người dùng có thể xem được nội dung mã HTML và các mã javascript được trả về từ máy chủ. Điều này phát sinh ra một nguy cơ bảo mật là nếu như các thông tin trong các trường dữ liệu và các trường ẩn không được bảo mật, và kiểm tra thì kẻ tấn công có thể phân tích và chỉnh sửa thông tin này và gửi những thông tin giả mạo lên trên máy chủ web. Để sử dụng các trường dữ liệu một cách an toàn cần phải thực hiện các bước kiểm tra sau: Lọc thông tin của tất cả các trường nhập dữ liệu được nhập vào. Ví dụ nếu trường dữ liệu là số thẻ tín dụng thì chỉ cho phép nhập số từ 0 đến 9. Kiểm tra độ dài của các trường dữ liệu nhập vào. Nếu sử dụng danh sách lựa chọn (selection list) cũng cần phải kiểm tra các giá trị cung cấp bởi người dùng. Trong trường hợp sử dụng javascript để kiểm tra các trường dữ liệu người dùng nhập vào, thì cần phải thực hiện kiểm tra lại một lần nữa trên máy chủ vì kẻ tấn công có thể tắt javascript và vượt qua quá trình kiểm tra dữ liệu ở trình duyệt một cách dễ dàng. Các trường dữ liệu ẩn thường được dùng để gửi lại các thông tin lên máy chủ web giúp lưu lại các thông tin trong phiên làm việc giữa người dùng thông qua trình duyệt với máy chủ web. Ví dụ như lưu trữ thông tin tên đăng nhập và mật khẩu để xác thực người dùng: Ngoài cách sử dụng trường dữ liệu ẩn, các trường dữ liệu cũng có thể được để trên URL: Để đảm bảo tính bảo mật và toàn vẹn của dữ liệu trong các trường dữ liệu ẩn cũng như các dữ liệu trên URL, nên sử dụng các cơ chế mã hóa để mã hóa dữ liệu chứa trong các trường dữ liệu ẩn và các trường dữ liệu trên URL. Ví dụ: Bảo mật cơ sở dữ liệu Sẽ rất nguy hiểm nếu như kẻ tấn công có được thông tin kết nối vào cơ sở dữ liệu của ứng dụng web, những thông tin về sản phẩm cũng như các thông tin cá nhân của khách hàng, thông tin giỏ hàng cũng như các thông tin về hóa đơn sẽ bị lộ một khi kẻ tấn công xâm nhập được vào cơ sở dữ liệu. Bởi vậy việc bảo mật thông tin kết nối vào cơ sở dữ liệu là điều cực kỳ quan trọng. Để bảo mật thông tin kết nối vào cơ sở dữ liệu thì các thông tin này phải được mã hóa và được lưu trữ trong một tệp tin riêng trên máy chủ web, điều này giúp tăng cường khả năng bảo mật cũng như bảo trì web. Các kịch bản trên máy chủ web sẽ mở tệp tin này ra và lấy thông tin về tên đăng nhập, mật khẩu cũng như các thông tin cần thiết khác để kết nối vào cơ sở dữ liệu. Những điều quan trọng để bảo vệ cơ sở dữ liệu khỏi các nguy cơ tấn công: Cấu hình tường lửa để bảo vệ cơ sở dữ liệu khỏi sự xâm nhập từ bên ngoài. Hình 2.22 Thiết lập tường lữa bảo vệ máy chủ cơ sở dữ liệu Đảm bảo rằng tài khoản được sử dụng trong ứng dụng web để đăng nhập vào máy chủ cơ sở dữ liệu đã được giới hạn quyền. Đảm bảo rằng máy chủ cơ sở dữ liệu đã được sao lưu, bảo trì và bảo vệ giống như cách bảo vệ các máy chủ khác trong mạng. Ghi lại thông tin các hoạt động quan trọng (logging) Giống như việc ghi lại các hoạt động trên máy chủ web (logging), việc ghi lại các hoạt động quan trọng cũng như các lỗi và các ngoại lệ (exception) trong ứng dụng web là cực kỳ cần thiết. Những thông tin này sẽ rất hữu dụng trong trường hợp ứng dụng xảy ra lỗi hay bị tấn công, những thông tin này sẽ được tổng hợp và phân tích để giúp tìm ra nguyên nhân của vấn đề, từ đó đưa ra cách giải quyết để tránh các vấn đề đó lặp lại. Các thông tin này cũng cần được lưu trữ ở những nơi an toàn và chỉ cho phép những người có thẩm quyền mới được truy cập vào. Bảo mật Web Client Mặc dù có thể tạo ra một kênh kết nối thông tin an toàn giữa client và máy chủ thông qua việc sử dụng SSL để bảo mật và chứng thực thông tin, nhưng không phải tất cả các vấn đề bảo mật đã được giải quyết hết, đặc biệt là các vấn đề về tính riêng tư (privacy and anonymity). Giả mạo web (Web Spoofing) Web spoofing là một dạng lừa đảo (phishing). Kẻ tấn công tạo ra một bản sao của một trang web nào đó nhằm kiểm soát thông tin giữa web client và web browser của nạn nhân nhằm lấy thông tin cá nhân hoặc các thông tin nhạy cảm khác. Hình 2.23 Giả mạo web Kẻ tấn công có thể lừa nạn nhân vào trang web giả mạo bằng các cách sau: Đặt một liên kết đến trang web giả mạo trên một trang web nổi tiếng. Gửi email đến nạn nhân và dẫn nạn nhân đến trang web giả mạo. Dùng các công cụ tìm kiếm để đưa nạn nhân đến trang web giả mạo. Lợi dụng các lỗi khi gõ địa chỉ vào trình duyệt của người dùng, ví dụ: MICR0SOFT.COM, gooogle.com.. để dẫn nạn nhân đến trang web giả mạo. Giao diện của trang web giả mạo rất giống với trang gốc vì vậy rất khó để người dùng có thể nhận biết đó là một trang web giả mạo. Cách đơn giản nhât là xem nguồn của trang web trả về. Vài trang web giả mạo còn sử dụng SSL để thiết lập kết nối đến trang web giả mạo của mình, người dùng có thể bị mắc bẩy nếu không kiểm tra thông tin về chứng nhận SSL và dễ dàng tin rằng một kết nối an toàn đã được thiết lập giữa trình duyệt của người dùng và máy chủ thật. Chứng thực giả có thể rất giống với chứng thực của trang web thực, tên có thể chứa một vài lỗi chính tả rất khó phân biệt. Sự vi phạm tính riêng tư Thông tin riêng của người dùng có thể bị lộ trong quá trình truy cập thông qua: Referer header: như đã được đề cập ở phần trên, trường referer trong HTTP header có thể tiết lộ thông tin riêng tư của người dùng. Cookies là một phần mở rộng của HTTP, dùng lưu trữ thông tin trạng thái trên máy người dùng khi viếng thăm một trang web. Sử dụng cookies giúp web máy chủ có thể lưu lại các thông tin liên quan đến người dùng như các thông tin các sản phẩm trong giỏ hàng đang mua… để máy chủ web có thể sử dụng lại trong những lần viến thăm sau. Một vài website sử dụng cookies để lưu lại thông tin đăng nhập và một vài thông tin khác về người dùng để giúp máy chủ web nhận ra được người dùng trong những lần viếng thăm tiếp theo. Điều này sẽ rất nguy hiểm nếu như kẻ tấn công xâm nhập vào hệ thống và lấy các thông tin cá nhân từ trong cookies. Một mối nguy cơ khác từ cookies là các trang website xấu có thể sử dụng cookies để đếm số lượt truy cập của người dùng vào website đó và có thể sử dụng thông tin này để phục vụ cho nhiều mục đích khác nhau như quảng cáo… Nếu thông tin trong cookies không được bảo mật, người dùng có thể thay đổi các giá trị trong cookies. Để có thể bảo mật những thông tin cá nhân và thông tin nhạy cảm trong cookies, các máy chủ web có thể sử dụng kỹ thuật chữ ký điện tử hoặc mã hóa thông tin trong cookies để xác thực và bảo mật thông tin trong cookies. Log file: mỗi khi trình duyệt người dùng tải về một trang web từ máy chủ web, một bản ghi thông thông tin sẽ được lưu lại trong tệp tin nhật ký (log file) trên máy chủ web. Bản ghi này bao gồm thông tin về địa chỉ IP, thời gian, URI và một vài thông tin khác. Những thông tin này có thể bị lạm dụng cho các mục đích khác nhau vi phạm quyền riêng tư của người dùng. Lướt web ẩn danh (Anonymous Browsing) Lướt web ẩn danh là kỹ thuật giúp người dùng có thể ẩn các thông tin về địa chỉ IP cũng như các thông tin cá nhân, riêng tư khác của mình trong quá trình duyệt web. Để làm được điều này người dùng có thể sử dụng một trong các cách sau: Sử dụng một proxy server tin cậy: người dùng có thể lướt web thông qua một proxy server để ẩn đi địa chỉ IP của mình với máy chủ web. Hình 2.24 Sử dụng máy chủ proxy tin cậy để lướt web ẩn danh Sử dụng các dịch vụ lướt web ẩn danh: sử dụng các dịch vụ lướt web ẩn danh trên mạng cũng tương tự như sử dụng thông qua một proxy server ngoại trừ việc sẽ không có một thông tin nào được lưu lại trên hệ thống của dịch vụ. Cổng thanh toán điện tử Cổng thanh toán điện tử (Payment Gateways) Cổng thanh toán điện tử là dịch vụ cho phép thanh toán trực tuyến ở các website thương mại điện tử. Nó tương tự như một POS khi thanh toán online. Cổng thanh toán điện tử cho phép mã hóa các thông tin nhạy cảm như số thẻ tín dụng, để đảm bảo thông tin có thể bảo mật và giao dịch thuận tiện giữa người bán và người mua. Đơn giản hơn, cổng thanh toán điện tử là công cụ nối liền website thương mại điên tử của bạn với tài khoản của người bán hàng. Cổng thanh toán điện tử đơn giản chỉ có chức năng thanh toán, tuy nhiên rất nhiều nhà cung cấp dịch vụ gateway đã cung cấp thêm các tiện ích kèm theo như giỏ mua hàng (shopping carts)… Hoạt động của cổng thanh toán điện tử Hình 2.25 Hoạt động của cổng thanh toán điện tử Khi một người mua đặt lệnh mua một đối tượng sản phẩm tại cổng thanh toán điện tử trên website, cổng thanh toán điện tử sẽ xử lý một lọat các tiến trình thanh toán ngầm bên trong như sau: Khách hàng đặt lệnh bằng cách nhập thông tin trên thẻ tín dụng và bấm vào nút ví dụ như "Xác nhận mua" trên website. Thông tin sẽ được mã hóa và chuyển từ Trình duyệt của khách hàng đến máy chủ web của người bán, để thực hiện được tiến trình này, bắt buộc máy chủ phải được hỗ trợ bởi tính năng mã hóa SSL (Secure Socket Layer). Người bán sẽ chuyển các thông tin giao dịch đó cho cổng thanh toán điện tử (thường là tự động). Đó lại là một tiến trình thực hiện mã hóa SSL khác của máy chủ cổng thanh toán điện tử. Cổng thanh toán điện tử sẽ nhận thông tin chi tiết về giao dịch đó và chuyển nó cho trung tâm xử lý tại ngân hàng của người bán. Trung tâm xử lý này sẽ chuyển thông tin giao dịch tới trung tâm thanh toán của CreditCard đó (Visa/Master) Trong trường hợp là thẻ American Express hay Discover Card, thì Amex và Dis kiêm luôn vai trò của acquiring bank và trực tiếp xử lý lệnh từ cổng thanh toán điện tử (gộp 2 bước vào 1). Trung tâm thanh toán thẻ sẽ chuyển thông tin giao dịch tới ngân hàng phát hành thẻ. Ngân hàng phát hành thẻ sẽ kiểm tra tính sở hữu và gửi thông tin phản hồi tới cổng thanh toán điện tử theo tiến trình ngược lại một mã phản hồi. Mã phản hồi đó cung cấp thông tin như chấp nhận hay không chấp nhận, lý do trong trường hợp không chấp nhận (như không đủ tiền, hay ko liên kết được với tài khoản ngân hàng .v.v.) Cổng thanh toán điện tử nhận mã phản hồi này và chuyển nó tới website và thể hiện bằng một thông báo dễ hiểu đối với người mua và bán. Tất cả các công việc đó chỉ diễn ra trong vòng 2-3 giây. Người bán sau đó phải chuyển hàng hoặc đáp ứng lệnh bán trước khi được quyền yêu cầu một lệnh hoàn thành giao dịch. Sau đó người bán nhập các thông tin cần thiết về việc đáp ứng lệnh bán và lưu vào một "batch" để gửi tới acquiring bank để hoàn thành giao dịch. Acquiring bank sau đó sẽ nạp tiền vào một tài khoản người bán chỉ định. Tiến trình từ việc yêu cầu lệnh đến khi hoàn thành giao dịch tiền về tài khoản cuối cùng mất chừng 3 ngày (trung bình). Các cổng thanh toán điện tử thường cung cấp sẵn các form, các công cụ tự động tính thuế và tự động hoàn thành hồ sơ gửi tới trung tâm xử lý. Đặc biệt là các công cụ chống giả mạo như geolocation, velocity pattern analysis, delivery address verification, computer finger printing technology, idenity morphing detection, AVS checks. Bảo mật trong hệ thống cổng thanh toán điện tử Mã số bảo mật thẻ (Card Security Code) Mã số bảo mật thẻ (Card Security Code) viết tắt là CSC đôi khi được gọi là giá trị xác minh thẻ (Card Verification Value) viết tắt là CVV hay mã số xác minh thẻ (Card Verification Code) viết tắt là CVC là một tính năng bảo mật cho thẻ ghi nợ hoặc thẻ tín dụng nhằm chống lại thẻ tín dụng gian lận. Mã số này chỉ có người chủ thẻ và ngân hàng phát hành thẻ biết, bởi vậy nó gần giống như mã PIN. Thật ra có đến vài loại mã số bảo mật thẻ: Loại mã số đầu tiên được gọi là CVV1 hay CVC1 được mã hóa trên sọc từ tính của thẻ dùng cho các giao dịch trực tiếp bằng thẻ. Loại mã số thứ hai được gọi là CVV2 hay CVC2 thường được yêu cầu khi thực hiện các giao dịch gián tiếp (card not present) như các giao dịch trên Internet, thư điện tử, điện thoại hay fax. CVV2 là một dãy số gồm 3 hay 4 chữ số được in chìm trên thẻ ở mặt trước hoặc ngay phía sau dãy từ chứa chữ ký. Đối với thẻ tín dụng hay thẻ ghi nợ của MasterCard, Visa, Diners Club, Discover, và JCB, dãy số này được in ngay phía sau bảng chữ ký và được gọi là "CVC2" (card validation code), "CVV2" (card verification value), "CVV", hay "CID" (card identification number). Đối với thẻ American Express, dãy số này được in chìm ở mặt trước , bên trên số thẻ. Dãy số CVC được tạo ra khi thẻ được cấp phát bằng cách dùng hàm băm có mã (keyed hash) để băm số thẻ và ngày hết hạn của thẻ với khóa của ngân hàng phát hành. Cung cấp thông tin này trong quá trình giao dịch để nhằm kiểm tra rằng khách hàng đã từng nhìn thấy thẻ. Yêu cầu khách hàng cung cấp CVV2 sẽ giúp tạo thêm một mức bảo vệ rủi ro cho các ngân hàng và chủ thẻ. Thông tin CVV2 được chủ thẻ cung cấp trong quá trình thực hiện giao dịch chỉ nhằm mục đích kiểm tra và xác thực thông tin, và người bán hàng sẽ không được lưu lại thông tin này vào cơ sở dữ liệu của mình. Mục đích của việc này là nhằm bảo vệ trong trường hợp cơ sở dữ liệu của người bán hàng bị rò rỉ thông tin, bởi vì không có CVC nên mã số thẻ bị đánh cắp sẽ không thể sử dụng được. CVV2 cũng còn một vài hạn chế: CVV2 không thể giúp chống lại các âm mưu lừa đảo (phishing) qua mạng. Nếu bằng một cách nào đó kẻ lừa đảo biết được số tài khoản thẻ của người dùng (như bằng cách tấn công cơ sở dữ liệu của người bán), đưa thông tin này cho nạn nhân bằng cách gửi email cho nạn nhân và hỏi nạn nhân về CVV2, nếu nạn nhân mắc bẩy và cung cấp CVV2 thì kẻ lừa đảo đã có đủ thông tin để sử dụng thẻ của nạn nhân. Bởi vì CVV2 không được phép lưu lại trong cơ sở dữ liệu của người bán hàng nên vì một lý do nào đó mà người bán hàng cần chỉnh sửa lại hóa đơn chẳng hạn sẽ không thể cung cấp lại CVV2 cho ngân hàng để thực hiện việc xác minh cho quá trình thanh toán lại. Hệ thống xác minh địa chỉ (Address Verification System) Hệ thống xác minh địa chỉ (Address Verification System) viết tắt là AVS là hệ thống dùng để xác minh, kiểm chứng chủ sở hữu thẻ tín dụng. Hệ thống sẽ kiểm tra địa chỉ của hoá đơn của thẻ tín dụng cung cấp bởi người dùng với địa chỉ được lưu trữ trong cơ sở dữ liệu của nhà cung cấp thẻ. AVS sẽ kiểm tra phần số của địa chỉ. Ví dụ nếu địa chỉ của của khách hàng là “101 Main Street, Highland, CA 92346”, AVS sẽ kiểm tra 101 và 92346. Hiện tại chỉ có một vài nước được hỗ trợ AVS trên Visa và MasterCard, đáng chú ý nhất là Mỹ, Canada và Anh. American Express hỗ trợ nhiều quốc gia hơn. Ngoài sự kiểm chứng tự đông, một vài ngân hàng còn cung cấp cho người bán những sự kiểm tra thủ công. Thường điều này được thực hiện cho tài khoản thẻ tín dụng nước ngoài như AVS chỉ làm việc trong cùng quốc gia. Phương tiện này trợ giúp người bán ngăn chặn gian lận phát sinh từ quốc gia khác. Ngân hàng của người bán gọi ngân hàng khách hàng (hoặc gửi fax cho ngân hàng đó để yêu cầu họ). Authorize.net Giới thiệu Authorize.net được thành lập năm 1996 là một cổng thanh toán điện tử cho phép những người bán hàng có thể sử dụng phương thức thanh toán bằng thẻ tín dụng trên website của mình. Authorize.net hiện có hơn 212.000 thành viên, và là cổng thanh toán điện tử lớn nhất trên thế giới. Tháng 11 năm 2007 Cybersource đã mua lại Authorize với giá 565 triệu đô. Hai phương thức tích hợp thanh toán điện tử qua Authorize.net Authorize.net cung cấp hai phương thức để tích hợp thanh toán điện tử vào trong website của người bán hàng: Phương thức thứ nhất được gọi là Simple Integration Method (SIM), với phương thức này, khi yêu cầu thanh toán, khách hàng sẻ được chuyển sang trang web của authorize.net để tiến hành cung cấp các thông tin cần thiết cho việc thanh toán. Sau khi hoàn tất quá trình thanh toán người dùng sẻ được chuyển lại trang web bán hàng. Phương thức này phù hợp cho những trang web bán hàng nhỏ. Phương thức thứ hai được gọi là Advanced Integration Method (AIM), phương thức này phức tạp hơn phương thức trên, nhưng bù lại người dùng sẻ không bị chuyển sang trang web của authorize.net mà có thể xử lý việc thanh toán trên trang web bán hàng. Sau khi thu thập đủ thông tin cho việc thanh toán, trang web bán hàng sẽ gửi một yêu cầu xác thực hay chuyển khoản lên trên trang web của authorize.net, authorize.net sẽ nhận và xử lý yêu cầu, sau đó gửi trả lại một kết quả. Trang web bán hàng sẽ nhận kết quả, và tùy theo kết quả nhận về sẽ tiến hành xử lý tương ưng. Phương thức này phù hợp với những website bán hàng lớn. PHÂN TÍCH HỆ THỐNG Yêu cầu hệ Quản lý được thông tin máy tính xách tay và các linh kiện liên quan. Quản lý được các hóa đơn mua hàng. Quản lý được thông tin chuyển hàng của khách hàng. Thiết lập được chế độ bảo mật SSL trên máy chủ. Khách hàng có thể xem hàng. Khách hàng có thể đăng ký mua hàng và đăng ký chuyển hàng. Thanh toán được bằng Credit Card. Ngôn ngữ và các kỹ thuật Ngôn ngữ lập trình và công cụ phát triển Ngôn ngữ: ASP.NET 2.0 C# Microsoft Net Framework 3.5 Công cụ phát triển: Microsoft Visual Studio 2008 Professional Hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2005 Express Edition. Các kỹ thuật và công nghệ Công nghệ Ajax: Microsoft ASP.NET 2.0 AJAX Extensions 1.0 và Microsoft Ajax Control Toolkit 1.0.20229.0 Các công việc cần giải quyết Khảo sát yêu cầu Phân tích thiết kế cấu trúc hệ thống Vẽ mô hình ER và hiện thực thành cơ sở dữ liệu Vẽ các mô hình hệ thống Thiết kế giao diện Viết chương trình Kiểm tra chương trình Các mô hình ERD Hình 3.1 Mô hình ERD Mô hình Use Case Khách hàng Hình 3.2 Mô hình Use Case phần khách hàng Quản trị viên và nhân viên Ở phần này người dùng phải đăng nhập vào hệ thống trước khi thực hiện việc quản lý và cập nhật thông tin. Hình 3.3 Mô hình Use Case phần quản trị Mô hình hoạt động (Activity) Đăng ký thành viên mới Hình 3.4 Mô hình hoạt động quá trình đăng ký thành viên mới Đăng nhập Hình 3.5 Mô hình hoạt động quá trình đăng nhập Thêm vào giỏ hàng Hình 3.6 mô hình hoạt động quá trình thêm sản phẩm vào giỏ hàng Mua hàng Hình 3.7 Mô hình hoạt động quá trình mua hàng Mô hình lớp ( Class) Tầng nghiệp vụ Hình 3.8 Mô hình lớp tầng nghiệp vụ Thanh toán Hình 3.9 Mô hình lớp xử lý thanh toán HIỆN THỰC Bảo mật thông tin Bảo mật thông tin trên URL Các thông tin trên thanh địa chỉ khi chuyển sang các trang điều được mã hóa bằng thuật toán đối xứng như các thông tin: mã sản phẩm, mã nhóm sản phẩm… Hình 4.1 Bảo mật thông tin trên URL Bảo mật thông tin thiết lập trong web.config Sử dụng thuật toán “RSA Protected Configuration” và công cụ “Aspnet_regiis.exe” để mã hóa thông tin kết nối vào CSDL và các khóa mã hóa dữ liệu. Thông tin chưa mã hóa: Hình 4.2 Thông tin kết nối vào CSDL trong web.config chưa được mã hóa Sau khi đã được mã hóa: Hình 4.3 Thông tin kết nối vào CSDL trong web.config đã được mã hóa Bảo mật thông tin thẻ tín dụng Thông tin thẻ tín dụng của khách hàng được lưu trữ trong một class (CreditCardInfomation) và được bảo mật bằng các thông tin đó được serialize (số hóa) thành một chuỗi ký tự, sau đó mã hóa bằng thuật toán mã hóa đối xứng trước khi được lưu trữ xuống cơ sở dữ liệu. Thông tin thẻ tín dụng Serialize (Số hóa) Mã hóa Lưu trữ xuống CSDL Để lấy lại thông tin thẻ tín dụng thì thực hiện ngược lại quá trình. Bảo mật các thiết lập quan trọng Các thiết lập của trang web được lưu trữ trong bảng SETTING, đối với những thiết lập quan trọng, thông tin sẽ được mã hóa trước khi được lưu trữ xuống cơ sở dữ liệu. Khi đọc các thông tin thiết lập này lên sẽ căng cứ vào trường ENCRYPTED để xác định xem giá trị có được mã hóa hay không, nếu giá trị đã được mã hóa thì sẽ giải mã. Hình 4.4 Mã hóa các thiết lập quan trọng trong cơ sở dữ liệu Sử dụng SSL Trong quá trình thanh toán, khi người dùng nhập thông tin thẻ tín dụng, hệ thống sẽ kiểm tra xem trang web đã được cấu hình SSL chưa, nếu đã được cấu hình thì hệ thống sẽ tự động chuyển sang giao thức https để bảo mật thông tin. Sơ đồ trang Web Phần cho khách hàng Sơ đồ 4.1 Sơ đồ trang web phần khách hàng Website Đăng nhập Đăng ký Sản phẩm mới Trang chủ Tất cả sản phẩm Nhóm SP theo nhà sản xuất Chi tiết sản phẩm Nhóm SP theo giá Giỏ hàng Thông tin chuyển hàng Thông tin hóa đơn Thông tin Thẻ tín dụng Quản lý thông tin khách hàng Thanh toán Phần cho người quản trị Sơ đồ 4.2 Sơ đồ trang web phần quản trị Phần quản trị Cài đặt hệ thống Quản lý Nhân viên Quản lý Sản phẩm Đăng nhập Quản lý Hóa đơn Nhân viên Nhóm Nhân viên Quản lý Máy tính Quản lý Nhóm thiết bị Nhóm SP theo nhà sản xuất Một số màn hình Trang chủ Hình 4.5 Màn hình trang chủ Trang đăng ký Hình 4.6 Màn hình trang đăng ký khách hàng Trang nhóm sản phẩm Hình 4.7 Màn hình trang nhóm sản phẩm Trang cập nhật giỏ hàng Hình 4.8 Màn hình trang cập nhật giỏ hàng Trang nhập thông tin chuyển hàng Hình 4.9 Màn hình trang thông tin chuyển hàng Trang nhập thông tin hóa đơn Hình 4.10 Màn hình trang thông tin hóa đơn Trang nhập thông tin thẻ tín dụng Hình 4.11 Màn hình trang thông tin thẻ tín dụng Xác nhận mua hàng Hình 4.12 Màn hình xác nhận mua hàng Trang quản lý sản phẩm Hình 4.13 Màn hình trang quản lý sản phẩm Trang quản lý nhóm sản phẩm Hình 4.14 Màn hình trang quản lý nhóm sản phẩm Trang quản lý hóa đơn Hình 4.15 Màn hình trang quản lý hóa đơn Trang quản lý nhân viên Hình 4.16 Màn hình trang quản lý nhân viên Trang quản lý nhóm và quyền nhân viên Hình 4.17 Màn hình trang quản lý nhóm nhân viên Trang quản lý thiết lập hệ thống Hình 4.18 Màn hình trang cấu hình hệ thống NHẬN XÉT ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN Nhận xét đánh giá Sau quá trình hơn 2 tháng tìm hiểu và viết đồ án, em đã học hỏi được rất nhiều điều qua đồ án này: Học được thêm các thuật toán mã hóa và bảo mật. Học được các kỹ thuật mới trong lập trình. Học được các kỹ năng viết tài liệu và báo cáo. Các vấn đề đã làm được trong đồ án: Nêu được ra các thuật toán được sử dụng trong việc bảo mật web và bảo mật thông tin trong thương mại và thanh toán điện tử. Đưa ra được các vấn đề bảo mật trong xây dựng và quản lý ứng dụng thương mại điện tử và giải pháp cho các vấn đề đó. Xây dựng được một ứng dụng web thương mại điện tử tương đối hoàn chỉnh. Tích hợp được thanh toán qua cổng thanh toán điện tử trong ứng dụng. Thực hiện được các vấn đề bảo mật cơ bản trong ứng dụng. Các vấn đề chưa làm được: Chưa đi sâu vào tìm hiểu các thuật toán. Ứng dụng chỉ mới dừng lại ở những chức năng cơ bản. Chưa đa dạng được các dịch vụ thanh toán, như thanh toán qua PayPal… Hướng phát triển Từ những vấn đề đã làm được và chưa làm được như trên, trong thời gian tiếp theo sẽ phát triển đồ án lên: Đi vào tìm hiểu sâu các thuật toán quan trọng. Mở rộng ứng dụng để tăng tính tiện dụng cho người dùng. Tích hợp thêm các dịch vụ thanh toán khác. PHỤ LỤC Thiết lập chứng chỉ SSL của Verisign Các bước thực hiện Tạo file Request Certificate Xin SSL Certificate từ VeriSign.com Cấu hình Trusted Root Certification Authority Import SSL Certificate cho Máy chủ web Kiểm tra kết quả Chuẩn bị Máy tính cài hệ điều hành Windows XP hoặc Windows Server 2003 Máy đã cài Internet Information Services (IIS) Thực hiện Tạo Request Certificate Logon Administrator, mở Internet Information Services (IIS) Manager, bung Web Site, chuột phải Default Web Site, chọn Properties Hộp thoại Default Web Site Properties, qua tab Directory Security, chọn Server Certificate Hộp thoại Welcome to the Web Server Certificate Wizard, chọn Next Hộp thoại Server Certificate, chọn Create anew certificate, chọn Next Trong hộp thoại Delayed or Immediate Request, chọn Prepare the request now, but send it later, chọn Next Hộp thoại Name and Security Settings, chọn Next Trong hộp thoại Organization Information, nhập thông tin như hình bên dưới, chọn Next Trong hộp thoại Your Site’s Common Name, nhập www.msopenlab.com vào ô Common name, chọn Next Hộp thoại Geographical Information, nhập thông tin như hình bên dưới, chọn Next Hộp thoại Certificate Request File Name, để mặc định đường dẫn C:\certreg.txt, chọn Next Hộp thoại Request File Summary, chọn Next, chọn Finish Trong hộp thoại Default Web Site Properties, chọn OK, tắt tất cả cửa sổ. Xin SSL Certificate từ VeriSign.com Mở Windows Explorer, copy nội dụng của file C:\certreq.txt. Mở Internet Explorer, truy cập địa chỉ chọn Free SSL Trial Trong cửa sổ Free SSL Trial Certificate, nhập đằy đủ thông tin (*: thông tin bắt buộc), chọn Continue Cửa sổ Welcome, chọn Continue Cửa sổ tiếp theo, nhập đầy đủ thông tin vào phần Technical Contact, chọn Continue Trong ô Select Server Platform, chọn Microsoft. Trong ô Select Version, chọn IIS 6.0. Dán nội dung file certreq.txt vào ô Paste Certificate Signing Request (CSR), optained from your server Trong ô What do you plan to use this SSL Certificate for?, chọn Web Server, chọn Continue Trong cửa sổ CRS Information, nhập MSOPENLAB vào ô Challenge Phrase và Re-enter Challenge Phrase. Nhập câu hỏi bất kỳ vào ô Reminder Question, chọn Continue Trong cửa sổ Order summary & acceptance, chọn Accept Kiểm tra: xin SSL Certificate thành công Cấu hình Trusted Root Certification Authority Đăng nhập vào hộp mail, kiểm tra nhận được e-mail từ Support@verisign.com, chọn vảo link như trong hình bên dưới. Trong trang web của verisign, chọn VeriSign CA Certificates Cửa sổ tiếp theo, kéo thanh trượt xuống dưới, chọn Secure Site Trial Root CA Certificate Trong cửa sổ Root CA Certificate, chọn Select All, copy tất cả nội dung Dán nội dung vào Notepad và save lại với tên ca.cer Mở Internet Explorer, vào Tools, chọn Internet Options, qua tab Content, chọn Certificates Trong hộp thoại Certificates, chọn Import Hộp thoại Welcome to the Certificate Import Wizard, chọn Next Hộp thoại File to Import, chọn Browse, trõ đường dẫn đến C:\ca.cer, chọn Next Hộp thoại Certificate Store, chọn Automatically select the certificate store based on the type of certificate, chọn Next, chọn Finish Hộp thoại Security Warning, chọn Yes Import SSL Certificate cho Web Server Đăng nhập vào hộp mail, mở e-mail của support@verisign.com, copy phần BEGIN CERTIFICATE … như trong hình bên dưới Dán nội dung vào Notepad, save lại với tên cert.txt Mở Internet Information Services (IIS) Manager, chuột phải Default Web Site chọn Properties Trong cửa sổ Default Web Site Properties, qua tab Directory Security, chọn Server Certificate Hộp thoại Welcome, chọn Next Hộp thoại Pending Certificate Request, chọn Process the pending request and install the certificate, chọn Next Hộp thoại Process a Pending Request, chọn Browse, trõ đường dẩn đến C:\cert.txt Hộp thoại SSL Port, giữ mặc định port 443, chọn Next 2 lần, chọn Finish Trong hộp thoại Default Web Site Properties, chọn View Certificate Kiểm tra Certificate được cấp bởi Verisign Kiểm tra kết quả Mở Internet Explorer, truy cập https://www.MSOpenLab.com, kiểm tra truy cập thành công. Hàm băm và mã hóa đối Xin xem mã nguồn kèm theo DANH MỤC TÀI LIỆU THAM KHẢO Electronic Payment Systems for E-Commerce Second Edition, Donal O’Mahony, Michael Peirce, Hitesh Tewari, Artech House, 2001. Security fundamentals for E-commerce, Vesna Hassler, Artech House, 2001. Web Security, Privacy & Commerce 2nd Edition, Simson Garfinkel, Gene Spafford , O'Reilly, 2001. Programming .NET Security, Adam Freeman, Allen Jones, O'Reilly, 2003.

Các file đính kèm theo tài liệu này:

  • doc75181394-Do-an-Tot-Nghiep-Nghien-Cuu-Van-de-Bao-Mat-Trong-Ung-Dung-Online-Payment-179.doc