Hoạt động của chương trình

Đây là màn hình chính của chương trình. Tại đây, người dùng có thể tìm kiếm sách bằng cách gõ vào tên sách và chọn thể loại. Người dùng còn có thể tìm kiếm chi tiết hơn về sách như giá cả, nhà xuất bản, tác giả . . . bằng cách chọn “Advanced Search”. Người dùng có thể thêm các sách trên màn hình vào giỏ hàng của mình . . .Tại đây, người sử dụng có thể đăng ký account mới hoặc đăng nhập vào hệ thống nếu đã có account rồi. .

doc23 trang | Chia sẻ: vietpd | Lượt xem: 1334 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Hoạt động của chương trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
II-Hoạt Động Của Chương Trình: Đây là màn hình chính của chương trình. Tại đây, người dùng có thể tìm kiếm sách bằng cách gõ vào tên sách và chọn thể loại. Người dùng còn có thể tìm kiếm chi tiết hơn về sách như giá cả, nhà xuất bản, tác giả . . . bằng cách chọn “Advanced Search”. Người dùng có thể thêm các sách trên màn hình vào giỏ hàng của mình . . .Tại đây, người sử dụng có thể đăng ký account mới hoặc đăng nhập vào hệ thống nếu đã có account rồi. . . Hình 5.2: Trang indexMain.jsp 1-Về Phía Khách Hàng, Người Sử Dụng: Khi người sử dụng chọn thể loại và gõ vào tên sách và nhấn nút go thì kết quả các sách tìm thấy sẽ hiễn thị ra. Tìm Kiếm.jsp: Ÿ Dữ liệu vào: tên sách, thể loại. Ÿ Xử lý: lấy các tham số người dùng nhập vào, sau đó tìm trong cơ sở dữ liệu xem có sách thoả mãn không. Nếu có, xuất ra danh sách các sách thỏa mãn. Nếu không có, thông báo ra màn hình cho khách hàng biết. Ÿ Dữ liệu ra: các sách tìm thấy gồm: tên sách, hình ảnh, đơn giá, tóm tắt nội dung, tác giả … Hình 5.3: Trang TìmKiếm.jsp Khi người sử dụng chọn “Advanced Search” thì sẽ hiễn thị trang: Hình 5.4: Trang TimTheoGia.jsp Tại đây người sử dụng có thể nhập tên sách cần tìm, nhập tên tác giả, chọn thể loại, ngôn ngữ, nhà xuất bản, giá thấp nhất, giá cao nhất và nhấn nút “Search”. Sau đó chương trình sẽ tìm kiếm trong database xem có quyển sách đó hay không. Nếu không có thì sẽ thông báo cho người sử dụng biết, còn nếu có thì sẽ hiện thông tin về các sách tìm thấy. Sau đó người dùng có thể click vào quyển sách hoặc tên sách để xem chi tiết về từng quyển sách: Hình 5.5: Trang ChiTietSach.jsp Người sử dụng có thể xem chi tiết nội dung sách hoặc bỏ sách vào giỏ hàng. Giỏ Hàng.jsp Ÿ Dữ liệu vào: mã sách, số lượng. Ÿ Xử lý:+ thêm sách vào giỏ hàng. + khi người dùng nhập số lượng mới và nhấn update thì kiểm tra: Nếu số lượng âm, hoặc số lượng là chữ, hoặc số lượng vượt quá số lượng hiện có của nhà sách thì: Thông báo. Nếu số lượng < = số lượng hiện có thì: cập nhật số lượng mới vào giỏ hàng. + khi người dùng chọn chức năng xóa giỏ hàng thì: - Xóa tất cả các sách hiện có trong giỏ hàng. Kể cả số lượng, đơn giá. + khi người dùng chọn kiểm tra giỏ hàng, thì hiện trang kiểmtragiỏhàng.jsp cho biết tổng số tiền phải trả của cả giỏ hàng. + khi người dùng chọn mua tiếp thì: quay về trang indexMain.jsp. Ÿ Dữ liệu ra: giỏ hàng chứa các sách người dùng chọn bỏ vào giỏ. Hình 5.6: GioHang.jsp Khi họ chọn mục kiểm tra giỏ hàng thì trang sau sẽ hiện ra: Hình 5.7: KiemTraGioHang.jsp Nếu người sử dụng đồng ý mua thì họ sẽ chọn lưu đơn đặt hàng, và lúc này nếu họ chưa Login vào hệ thống thì trang Login sẽ hiện ra để người dùng đăng nhập: Login.jsp Ÿ Dữ liệu vào: username, password của khách hàng đăng nhập Ÿ Xử lý: kiểm tra username và password có trong database hay không nếu chưa có thì yêu cầu nhập lại. Nếu có rồi thì cho phép tạo đơn đặt hàng. Ÿ Dữ liệu ra: khách hàng đăng nhập thành công vào hệ thống, lưu session (MaKH), session(QuyềnĐăngNhập) của khách hàng. Hình 5.8: Trang Login.jsp Nếu như là người dùng mới thì phải đăng ký vào hệ thống bằng cách chọn mục đăng ký ở thanh tiêu đề. ĐăngKý.jsp: Ÿ Dữ liệu vào: username, password, họ tên, địa chỉ, điện thoại, email.. Ÿ Xử lý: nếu như username, password chưa tồn tại trong database và các thông tin như: họ tên, điạ chỉ, email hợp lệ thì cập nhật vào database. Nếu username và password đã tồn tại rồi thì yêu cầu chọn username khác. Ÿ Dữ liệu ra: khách hàng đăng ký được account. Hình 5.9: Trang DangKy.jsp Khi người dùng đăng nhập thành công thì sẽ kiểm tra họ có là khách quen hay không (khách quen có nghĩa là đã mua 3 lần trỡ lên), nếu họ là khách quen thì sẽ hiễn thị tất cả 3 lần mua gần nhất để họ có thể mua lại những sách ở những lần mua trước mà không cần phải mất nhiều thời gian. Hình 5.10: KhachQuen.jsp Sau khi khách hàng tạo đơn đặt hàng thì sẽ hiễn thị form sau, tại đây khách hàng có thể chọn hình thức thanh toán là chuyển khoản hay tiền mặt. Hình 5.11: Trang TạoDDH.jsp KiểmTraTàiKhoản.jsp Ÿ Dữ liệu vào: Hình thức thanh toán mà khách hàng chọn, ngày thanh toán. Ÿ Xử lý: + kiểm tra xem nếu hình thức thanh toán là tiền mặt: thì sẽ lưu đơn đặt hàng này vào database và hẹn ngày giao hàng cho khách hàng. + nếu hình thức thanh toán là chuyển khoản: yêu cầu khách hàng chọn loại card, số card, ngày hết hạn,… sau đó gởi đến ngân hàng để kiểm tra: nếu các thông tin về card hợp lệ: cập nhật đơn đặt hàng. Nếu thông tin không hợp lệ: thông báo lỗi. Ÿ Dữ liệu ra: đơn đặt hàng của khách hàng. Nếu khách hàng chọn hình thức thanh toán là chuyển khoản thì sẽ hiện form yêu cầu khách hàng nhập vào mã tài khoản, loại tài khoản, ngày hết hạn . . . Tại trang này chúng ta phải bảo mật sao cho thông tin khách hàng nhập vào sẽ không bị lộ nhằm bảo đảm an toàn cho tài khoản của khách hàng. Sau khi khách hàng nhập đầy đủ mọi thông tin, thông tin khách hàng nhập vào sẽ được gởi đến ngân hàng để xác nhận. Mọi thông tin khách hàng nhập vào sẽ được mã hoá trên đường truyền sao cho hacker không thể tấn công được. Hình 5.12: Trang KiemTraTaiKhoan.jsp Nếu mã tài khoản và loại tài khoản hợp lệ thì mọi thông tin sẽ được lưu vào database. 2-Về Phía Người Quản Trị: Khi người quản trị muốn vào hệ thống để quản trị thì họ phải đăng nhập bằng username và password. Nếu qúa trình đăng nhập thành công thì sẽ vào tới trang quản trị. Ở đây ta cũng phải bảo mật sao cho thông tin của người quản trị đăng nhập như: username, password sẽ không bị lộ. Chúng ta sẽ mã hoá mọi thông tin của quản trị trên đường truyền. Và mọi trang của người quản trị cũng sẽ được bảo mật bằng session để những người khác không thể vào được khi mà họ chưa đăng nhập được vào hệ thống. Khi người quản trị đã đăng nhập thành công vào hệ thống, họ có thể chọn các tác vụ cần quản lý như: sách, tác giả, nhân viên, các đơn đặt hàng, phiếu xuất nhập, … Ø Người quản trị có thể chọn quản trị Sách: ViewSach.jsp: Ÿ Dữ liệu vào: chọn viewSách. Ÿ Xử lý: Kiểm tra xem có sách nào lưu trữ trong cơ sở dữ liệu hay không. + nếu không có sách nào: thông báo. + nếu có sách: hiễn thị các sách ra. Ÿ Dữ liệu ra: bãng danh sách các sách hoặc thông báo lỗi. Hình 5.13: Trang ViewSach.jsp Thêm Sách, tại đây người sử dụng sẽ chọn sách cần thêm và chọn hình ảnh về sách, sau đó upload: ThêmSách.jsp: Ÿ Dữ liệu vào: các thông tin như mã sách, tên sách, thể loại, ngôn ngữ, nhà xuất bản, giá sách, hình ảnh. Ÿ Xử lý: kiểm tra xem mã sách này đã tồn tại trong cơ sở dữ liệu hay chưa + nếu chưa có: upload sách lên server. Thêm sách và các thông tin về sách vào cơ sở dữ liệu. + nếu mã sách đã có trong cơ sở dữ liệu: thông báo lỗi Ÿ Dữ liệu ra: Bãng viewSách chứa tất cả các sách kể cả sách mới thêm vào. Hình 5.14: Trang ThemSach.jsp Sửa sách: người quản trị chọn sách cần sữa và nhấn sữa sách. Sửa Sách.jsp: Ÿ Dữ liệu vào: mã sách Ÿ Xử lý: kiểm tra các thông tin chỉnh sửa về sách có hợp lệ hay không. - nếu có chỉnh sửa hình thì upload hình lên server. - nếu không thì lấy hình củ. - sau đó cập nhật thông tin vừa chỉnh sửa vào cơ sở dữ liệu . Ÿ Dữ liệu ra: Hiển thị các sách, kể cả sách vừa thêm vào. Hình 5.15: SửaSach.jsp Ø Người quản trị có thể chọn quản trị khách hàng: ViewKhachHang.jsp: Ÿ Dữ liệu vào: chọn viewkhachhang. Ÿ Xử lý: Kiểm tra xem có sách nào lưu trữ trong cơ sở dữ liệu hay không. + nếu không có khách nào: thông báo. + nếu có khách: hiễn thị các khách hàng ra. Ÿ Dữ liệu ra: bãng danh sách các khách hàng hoặc thông báo lỗi. Hình 5.16: Trang ViewKhachHang.jsp ThêmKháchHàng.jsp: Ÿ Dữ liệu vào: các thông tin như mã khách hàng, tên khách hàng, địa chỉ,.. Ÿ Xử lý: kiểm tra xem mã khách hàng này đã tồn tại trong cơ sở dữ liệu hay chưa + nếu chưa có: Thêm khách hàng và các thông tin về khách hàng vào cơ sở dữ liệu. + nếu mã khách hàng đã có trong cơ sở dữ liệu: thông báo lỗi Ÿ Dữ liệu ra: Bãng viewkháchhàng chứa tất cả các khách kể cả khách mới thêm vào. Hình 5.17: Trang ThemKhachHang.jsp Sửa KháchHàng.jsp: Dữ liệu vào: mã khách hàng Xử lý: kiểm tra các thông tin chỉnh sửa về khách hàng có hợp lệ hay không. nếu hợp lệ thì cập nhật vào cơ sở dữ liệu . Dữ liệu ra: Hiển thị các khách hàng, kể cả khách hàng vừa thêm vào. Hình 5.18:Trang SuaKhachHang.jsp Ø Người quản trị có thể chọn quản trị đơn đặt hàng của khách hàng: ViewDDH.jsp: Ÿ Dữ liệu vào: chọn viewDDH. Ÿ Xử lý: Kiểm tra xem có đơn đặt hàng nào lưu trữ trong cơ sở dữ liệu hay không. + nếu không có đơn nào: thông báo. + nếu có đơn: hiễn thị các đơn đặt hàng ra. Ÿ Dữ liệu ra: bãng danh sách các khách hàng hoặc thông báo lỗi. Hình 5.19: ViewDDH.jsp Ø Người quản trị có thể chọn quản trị nhân viên, thể loại, ngôn ngữ, tác giả, nhà xuất bản,… 3- Chức Năng Đối Với Nhân Viên Và Người Quản Trị: Sau khi đăng nhập thành công với username và password thì cả NhânViên và người quản trị có thể quản lý các chức năng sau: Ø Có thể chọn quản trị phiếu thu ( là phiếu thu tiền của các đơn đặt hàng của khách hàng): Thêm phiếu thu: ThêmPhiếuThu.jsp: Ÿ Dữ liệu vào: các thông tin như mã phiếu thu, mã khách hàng,.. Ÿ Xử lý: kiểm tra xem mã phiếu thu, mã khách hàng này đã tồn tại trong cơ sở dữ liệu hay chưa + nếu chưa có: Thêm phiếu thu và các thông tin về phiếu thu vào cơ sở dữ liệu. + nếu mã phiếu thu đã có trong cơ sở dữ liệu: thông báo lỗi Ÿ Dữ liệu ra: Bãng viewphiếu thu chứa tất cả các phiếu thu kể cả phiếu thu mới thêm vào. Hình 5.20: Trang ThemPhieuThu.jsp Sửa Phiếu thu: Sửa PhiếuThu.jsp: Dữ liệu vào: mã phiếu thu Xử lý: kiểm tra các thông tin chỉnh sửa về phiếu thu có hợp lệ hay không. nếu hợp lệ thì cập nhật vào cơ sở dữ liệu . Dữ liệu ra: Hiển thị các phiếu thu, kể cả phiếu thu vừa thêm vào. Hình 5.21: Trang SuaPhieuThu.jsp Ø Có thể chọn quản trị phieu xuất (xuất hàng từ kho): Hình 5.22: Trang ViewPhieuXuat.jsp Hình 5.23: Trang ThemPhieuXuat.jsp Hình 5.24: Trang SuaPhieuXuat.jsp Ø Có thể chọn quản trị chi tiết phiếu xuất: Hình 5.25: Trang ViewCT_PhieuXuat.jsp Hình 5.26: Trang ThemCT_PhieuXuat.jsp Hình 5.27: Trang SuaCT_PhieuXuat.jsp Ø Tương tự, có thể chọn quản trị phiếu nhập, chi tiết phiếu nhập, phiếu giao, chi tiết phiếu giao, phiếu chi. CHƯƠNG 6: BẢO MẬT TRÊN HỆ THỐNG 1- Giải Pháp Về Bảo Mật : - Một trong những cách thông thường để bảo vệ sự xâm nhập bất hợp pháp từ máy khách vào máy chủ là yêu cầu phía máy khách chứng thực quyền đăng nhập cho phép. - Thông thường khi trình khách yêu cầu một tài nguyên nào đó được bảo vệ bởi trình chủ, trình chủ sẽ trả về yêu cầu phía máy khách hiển thị hộp thoại yêu cầu người dùng nhập vào username và password. Nếu máy khách nhập đúng thì trình chủ sẽ cho phép tài nguyên được sử dụng. Ngược lại, nếu nhập sai thì máy khách sẽ bị từ chối truy cập. - Với giao thức HTTP việc gửi và nhận dữ liệu để chứng thực quyền truy cập bằng mật mã (điều khiển bởi trình chủ) thường được thực hiện theo hai cách : cách gởi mật mã giản đơn (basic authentication) và cách gửi mật mã băm (digest authentication). + Cách gởi mật mã giản đơn : được sử dụng khá phổ biến trên hầu hết các trình chủ Web. Khi máy khách yêu cầu một tài nguyên được bảo vệ, máy chủ sẽ gởi yêu cầu về máy khách yêu cầu nhập vào username và password. Thông tin này sẽ được mã hóa và chuyển về máy chủ đối chiếu. Nếu hợp lệ, máy chủ sẽ cho phép máy khách đăng nhập vào tài nguyên. Việc mã hóa thông tin về mật khẩu tại máy khách do browser đảm nhận và sử dụng thuật toán mã hóa Base64. + Cách gởi mật mã băm : được phát triển để khác phục điểm yếu của cách gởi mật mã giản đơn. Với cách này, mật mã do người dùng nhập vào không cần phải chuyển đi trên mạng (do đó hạn chế được khả năng mật khẩu bị đánh cắp). Khi máy khách yêu cầu tài nguyên được bảo vệ bằng máy chủ, máy chủ sẽ tính toán một mã số đặc biệt và trả về máy khách, yêu cầu người dùng nhập vào username và password. Mật khẩu nhập vào sẽ được trình khách (thường là browser) tính toán kết hợp với mã số của trình chủ theo một thuật toán đặc biệt để sinh ra một mã số khác. Mã số do máy khách sinh ra được gởi ngược về trình chủ. Máy chủ tính toán mã số do trình khách gởi trả theo thuật toán băm đến đúng vị trí chứa password do máy chủ lưu giữ. Cơ chế này không bảo đảm 100% an toàn trong quá trình trao đổi về thông tin chứng thực quyền truy cập giữa client/server. Tuy nhiên nó tốt hơn cách gởi mật mã giản đơn. - Tuy nhiên, điều đáng quan tâm đó là dữ liệu truyền theo thức HTTP không được bảo vệ trong quá trình chuyển từ máy khách lên máy chủ. Hai kỹ thuật trên chỉ đề cập mã hóa password và giải mã password ở đầu gởi và đầu nhận, còn giao thức truyền vẫn là HTTP. Có một giải pháp khác đó là thay giao thức truyền HTTP bằng một giao thức truyền bảo mật hơn, đó là giao thức mở rộng HTTPS (HTTP Security). Giao thức HTTPS cũng dựa trên HTTP nhưng sử dụng kỹ thuật mã hóa dữ liệu ở tầng Socket trước khi gởi đi (tầng này còn được gọi là Security Socket Layer hay SSL). Dữ liệu trên đường truyền cho dù có bị đọc được nhưng cũng khó có thể giải mã. Trên máy chủ bạn phải chạy thêm dịch vụ HTTPS dùng để tiếp nhận và giải mã. Dữ liệu chuyển từ máy chủ về máy khách theo giao thức HTTPS cũng sẽ được mã hóa. - J2EE 1.3.1 hỗ trợ dịch vụ HTTPS chạy trên cổng 7000. 2- Giới Thiệu Về SSL (Secure Sockets Layer protocol) : - SSL được phát triển từ Hãng Netscape và được chấp nhận khắp thế giới trong việc xác nhận và mã hóa truyền thông giữa client và server. - The Transmission Control Protocol/Internet Protocol (TCP/IP) chi phối việc chuyển tải và định hướng dữ liệu trên Internet. Các giao thức khác như : HTTP, LDAP, IMAP chạy ở tầng trên TCP/IP có cảm giác như là tất cả các giao thức này sử dụng TCP/IP để hổ trợ những tác vụ ứng dụng như : hiển thị trang Web, chạy các mail server … Hình 6.1 : Mô hình các lớp - Giao thức SSL chạy ở trên TCP/IP và dưới các giao thức ở mức cao hơn như HTTP IMAP … SSL sử dụng TCP/IP thay cho các giao thức ở mức cao hơn, và trong quá trình xử lí cho phép server có thể chứng thực client (cả client và server đều có hổ trợ SSL), cho phép client chứng thực với server, và cho phép cả những máy để thiết lập một kết nối đã được mã hóa. - Giao thức SSL bao gồm hai giao thức con : SSL record protocol và SSL handshake protocol. Giao thức SSL record định nghĩa các định dạng được sử dụng để truyền dữ liệu. Còn giao thức SSL handshake bao gồm việc sử dụng giao thức SSL record để thay đổi một loạt các thông điệp giữa server và client khi chúng thiết lập kết nối SSL lần đầu tiên. - Việc thay đổi các thông điệp này được thiết kế thuận tiện cho các công việc sau : + Chứng thực server đối với client. + Cho phép client và server chọn những thuật toán mã hóa. + Chứng thực có chọn lựa của client đối với server. + Sử dụng những kỹ thuật mã hóa khóa công cộng để tạo những điều bí mật được chia sẽ. + Thiết lập một kết nối SSL được mã hóa. 3- Keytool : - Keytool là một công cụ khóa bảo mật của Java. Nó tạo ra và quản lí các khóa công cộng, riêng tư và xác nhận quyền bảo mật. Nó còn làm các công việc sau : + Quản lý các cặp khóa công cộng và riêng tư của bạn. + Lưu trữ các khóa công cộng. + Sử dụng chứng thực để xác nhận những người khác. + Xác nhận dữ liệu nguồn. - Tất cả các thông tin mà keytool quản lý được lưu trữ trong một cơ sở dữ liệu được gọi là “keystore”. Sun có một keystore mặc định sử dụng một định dạng mới được gọi là “JKS” (Java Key Store). - Tạo một chứng nhận phía Server : keytool –genkey –alias “server” –keystore “keystore.jks” - Bạn sẽ nhập một loạt các thông như : keystore password, first and last name, your organization unit, … Hình 6.2 :Tạo cặp khóa phía server. - Xuất chứng nhận server thành một file chứng nhận để nhập vào realmtool. keytool –keystore keystore.jks –export –alias “server” –file “keystore.cer” - Nhập chứng nhận server mới thành file cacerts.jks có quyền chứng thực bỡi một tổ chức nào đó (Certifycate Authority : CA ) keytool – import –alias “serverCA” –keystore “cacerts.jks” – file “keystore.cer “ - Tạo một chứng nhận phía Client : tương tự Server keytool –genkey –alias “client” –keystore “clientkeystore.jks” - Bạn sẽ nhập một loạt các thông như : keystore password, first and last name, your organization unit, … - Xuất chứng thực Client mới từ keystore vào một file chứng thực : keytool –keystore “clientkeystore.jks” –export –alias client –file “cliencert.cer”. - Nhập chứng nhận client mới thành file cacerts.jks có quyền chứng thực bỡi một tổ chức nào đó (Certifycate Authority : CA ). Điều này cho phép server xác nhận đúng là client. keytool – import –alias “j2eeCA” –keystore “cacerts.jks” – file “clinetkeystore.cer “ - Nhập chứng thực client vào realm (Nhập các file chứng thực ) : realmtool –import “clinetkeystore.cer” - Để kiểm tra nội dung chứng thực của server : keytool –list –keystore keystore.jks –alias sever –v - Để kiểm tra nội dung chứng thực của client : keytool –list –keystore cacerts.jks - Khi chúng ta truy xuất tài nguyên theo giao thức HTTPS thì chúng ta sẽ được phía server trả về thông báo sau : Hình 6.3 : Thông báo bảo mật của server trả vè cho client - Khi chúng ta chọn View Certificate, thi sẽ ra hình sau : Hình 6.4 : Thông tin chứng thực phía server. - Nếu chúng ta không muốn hiện thông báo của hình P1.13 khi truy xuất tài nguyên theo giao thức HTTPS thì chúng ta chọn Install Certificate trong hình 4. Làm theo một loạt hướng dẫn cho đến khi xuất hiện hình sau : Hình 6.5 : Lưu trữ chứng thực phía server. - Chọn Yes để kết thúc quá trình Install. CHƯƠNG 7: KẾT LUẬN 1- Các Kết Qủa Đạt Được: Trê