Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
1,94 MB
Nội dung
BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG KHOA: HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM ĐỒ ÁN MÔN HỌC BẢO MẬT MẠNG MÁY TÍNH VÀ HỆ THỐNG NGHIÊN CỨU GIẢI PHÁP ĐẢM BẢO AN TOÀN CHO RESTFUL API VỚI SPRING BOOT TRÊN CƠ SỞ DỮ LIỆU MONGODB ……………………………………………………………………………………………… Giảng viên hướng dẫn: ThS Phạm Trọng Huynh Sinh viên thực hiện: Hà Thị Thùy Trang Phạm Lê Nhật Quang Lớp: 08_DHCNPM Khóa: 08 TP Hồ Chí Minh, tháng 10 năm 2022 BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG KHOA: HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM ĐỒ ÁN MƠN HỌC BẢO MẬT MẠNG MÁY TÍNH VÀ HỆ THỐNG NGHIÊN CỨU GIẢI PHÁP ĐẢM BẢO AN TOÀN CHO RESTFUL API VỚI SPRING BOOT TRÊN CƠ SỞ DỮ LIỆU MONGODB ……………………………………………………………………………………………… Giảng viên hướng dẫn: ThS Phạm Trọng Huynh Sinh viên thực hiện: Hà Thị Thùy Trang Phạm Lê Nhật Quang Trần Bá Thiện Lớp: 08_DHCNPM Khóa: 08 TP Hồ Chí Minh, tháng 10 năm 2022 MỞ ĐẦU LỜI CẢM ƠN Em xin chân thành cảm ơn thầy Phạm Trọng Huynh, Giảng viên môn bảo mật mạng máy tính hệ thống trường Đại học Tài nguyên Mơi trường Thành phố Hồ Chí Minh cung cấp cho kỹ kiến thức cần thiết để hoàn thành nhiệm vụ dự án Tuy nhiên, trình làm đề tài, kiến thức chun mơn cịn hạn chế em, chắn khơng tránh khỏi thiếu sót việc nêu đánh giá vấn đề Em mong đóng góp ý kiến, đánh giá thầy giáo mơn để khóa luận em hoàn thiện Chân thành cảm ơn! NHẬN XÉT ĐIỂM Chương Giới thiệu đồ án 1.1 Định nghĩa vấn đề Ngày hệ thống Internet ngày phát triển, phần mềm sử dụng hệ thống internet ngày nhiều Các phần mềm đa dạng dẫn đến có nhiều yêu cầu cần đáp ứng Một số phần mềm địi hỏi lượng thơng tin lớn, liệu lớn… lưu liệu thiết bị sử dụng, số loại yêu cầu cập nhật realtime (theo thời gian thực) để đảm bảo đắn thơng tin (chứng khốn, tiền tệ ), số phần mềm đòi hỏi xử lý nhanh mạnh, mà thiết bị lại thực cấu hình khơng đủ Thơng thường, để sử dụng dịch vụ người dùng cần dùng trình duyệt, truy cập website thực Nhưng người dùng sử dụng giao diện mà nhà cung cấp thiết kết sẵn nhiên chúng không đáp ứng mong muốn người dùng Để giải vấn đề cần xây dựng ứng dụng có tính dịch vụ giao diện thân thiện Vì cần phải sử dụng dịch vụ riêng biệt để tương tác với hệ thống cung cấp dịch vụ nói Một hệ thống gọi API 1.2 Phạm vi đồ án 1.3 Mục tiêu, cần thiết đề tài, lại chọn đề tài này? Chương Tìm hiểu JDK 8, Gradle, Spring Boot, Spring data mongodb 2.1 JDK gì? Java Development Kit (JDK) là ba gói cơng nghệ cốt lõi sử dụng trong lập trình Java, với JVM (Máy ảo Java - Java Virtual Machine) JRE (Java Runtime Environment - Môi trường Java Runtime) Việc phân biệt ba công nghệ này, hiểu cách chúng kết nối với quan trọng JVM thành phần Java tảng để chạy chương trình JRE phần on-disk Java, phần tạo JVM JDK cho phép developer tạo chương trình Java, chương trình JVM JRE xử lý chạy Các developer sử dụng Java thường dễ nhầm lẫn Java Development Kit với Java Runtime Environment Để phân biệt, ta cần nhớ JDK gói công cụ phát triển phần mềm dựa Java, JRE gói cơng cụ sử dụng để chạy Java code JRE sử dụng thành phần độc lập để chạy chương trình Java, dù vậy, JRE phần JDK JDK địi hỏi cơng cụ JRE chạy chương trình Java phần việc phát triển chúng Chia sẻ JDK theo cách sau: Định nghĩa chuyên ngành: JDK hệ tiêu chuẩn việc triển khai tảng Java, bao gồm trình thơng dịch dịch thư viện lớp Định nghĩa thông thường: JDK gói phần mềm bạn tải xuống để tạo ứng dụng dựa Java 2.2 IDK Java Development Kit (JDK – Bộ công cụ cho người phát triển ứng dụng ngơn ngữ lập trình Java) tập hợp công cụ phần mềm phát triển Sun Microsystems dành cho nhà phát triển phần mềm, dùng để viết applet Java hay ứng dụng Java – công cụ phát hành miễn phí gồm có trình biên dịch, trình thơng dịch, trình giúp sửa lỗi (debugger, trình chạy applet tài liệu nghiên cứu) Kể từ ngôn ngữ Java đời, JDK phát triển phần mềm thông dụng cho Java Ngày 17 tháng 11 năm 2006, hãng Sun tuyên bố JDK phát hành giấy phép GNU General Public License (GPL), JDK trở thành phần mềm tự Việc thực phần lớn ngày tháng năm 2007 mã nguồn đóng góp cho OpenJDK Java Development Kit bao gồm công cụ cần thiết trình phát triển ứng dụng Java + JRE Các cơng cụ là: javac.exe, java.exe, applet viewer,… vai trị cơng cụ sau: Javac.exe – giúp biên dịch file nguồn viết ngôn ngữ Java (*.java) thành mã máy (byte code) Java.exe – gọi tới JRE, tải nạp file mã máy biên dịch gọi tới method main để thực thi mã Applet Viewer – để chạy ứng dụng viết applet Như JDK cung cấp tới bạn cơng cụ trọn gói để phát triển ứng dụng Java bao gồm: phát triển (kết file java) –> biên dịch (kết file class) –> thực thi ứng dụng Yêu cầu phần mềm / Cấu hình: Windows XP/Vista/7/8 2.3 Giới thiệu Gradle Trong trình phát triển phần mềm, việc tự động hóa q trình build quản lý thư viện quan trọng, nhằm tối ưu hóa cơng đoạn biên dịch, đóng gói; thuận tiện cho việc phát triển phần mềm, maven gradle cơng cụ Năm 2000, Apache Ant đời tool đóng gói đại nhanh chóng sử dụng dự án sử dụng ngôn ngữ Java Ant cho phép nhà phát triển mô tả meta-data dự án hoạt động trình build thơng qua cú pháp XML Tuy nhiên đoạn mã viết theo tiêu chuẩn Ant dài phức tạp Năm 2004, Apache Maven đời đưa cải thiện so với Ant Bằng việc đưa cấu trúc dự án tiêu chuẩn, Maven cho phép nhà phát triển sử dụng plugin thay phải viết tồn dịng code mơ tả q trình đóng gói Ngồi Maven cịn cho phép tải thư viện phụ thuộc thông qua internet, điều giúp cho việc chia sẻ quản lý phiên trở nên dễ dàng Đổi lại, nhà phát triển nhiều công sức để tùy chỉnh cấu trúc dự án không tuân theo Maven Standard Directory Layout Và việc sử dụng XML làm cho file POM (Project Object Model) trở nên dài dòng phức tạp để nắm bắt logic Gradle kết hợp ưu điểm Ant Maven đồng thời thêm vào cải thiện sử dụng Groovy việc giải tốn đóng gói 2.4 Các ưu điểm gradle Gradle kết hợp ưu điểm Ant Maven đồng thời đem lại cải thiện thông qua việc sử dụng Groovy (một ngơn ngữ JVM) việc giải tốn đóng gói Nhờ build script viết Gradle trở nên ngắn gọn trực quan dễ đọc Tất điều tạo nên sức lôi vô lớn cộng đồng developer khắp giới, công ty dần chuyển sang dùng Spring Boot cho dự án Lựa chọn học Spring Boot thời điểm định đắn thị trường việc làm nhiều Khơng vậy, có nhiều cơng ty dần chuyển từ Spring qua Spring Boot cho dự án cũ dự án dùng hẳn Spring Boot Khởi tạo project spring boot Để khởi tạo project Spring Boot nhanh chóng bạn truy cập vào trang Spring Initializr lựa chọn thông số cấu hình cho dự án, dependency cần thiết khởi tạo project maven với dependency sau: Lưu ý: Nếu dùng Spring Initializr, bạn thêm dependency cách chọn “Add dependencies” tab “Dependencies” Cấu trúc project Spring Boot Trong project Spring Boot thường có layer chính: Domain: chứa ánh xạ database – entity Repository: định nghĩa DAO (Data access object) class dùng để làm việc với database Service: chứa business logic class Controller: nhận request từ client Mapper: dùng để convert qua lại entity dto (khơng có được) Exception Hanlder: xử lý exception xảy trình thực thi yêu cầu client Dự án sau hồn thành có cấu trúc Bây giờ, bắt đầu phần Domain layer Đối với hầu hết dự án, thường bắt đầu với domain layer trước, sau phân tích thiết kế sở liệu xong, đến bước định nghĩa entity ánh xạ table tương ứng database Trong viết này, dùng H2 database, bạn linh hoạt sử dụng database khác SQL, MySQL, Mariadb tùy ý Vì sử dụng JPA JPA provider bên Hibernate nên dễ dàng chuyển đổi qua lại database mà code không bị ảnh hưởng Trong khuôn khổ viết này, định nghĩa User entity làm sau: Các entity class phải thích với @Entity annotation, ngồi annotation khác lombok sử dụng để giảm thiểu việc triển khai method getter, setter, constructor, … Repository Layer Đây layer định nghĩa DAO class dùng để thao tác với database Tuy nhiên, phần này, không cần phải triển khai method findById (), findAll, save (), delete(), update() chúng triển khai thơng qua tầng abstraction đặt JPA implementation Để sử dụng tính này, cần khai báo Repository class thừa kế từ CrudRepository Service Layer Như đề cập trước đó, Service layer nơi chứa business dự án, cầu nối Controller layer Repository layer Với ứng dụng CRUD cần method dùng cho việc thêm, sửa, xóa, cập nhật tìm kiếm Trước tiên, cần định nghĩa UserService Interface UserServiceImpl class dùng để triển khai method định nghĩa UserService Các bạn thấy cách làm có “kỳ cục” khơng? Tại không tạo UserService class triển khai code đó? Điều hồn tồn được, nhiên bạn cần phải biết cách làm giúp tăng tính mở rộng code Giả sử, có UserService UserServiceImpl hoạt động ổn Về sau này, cần chỉnh sửa số tính UserServiceImpl để tăng performance adapt cho phù hợp với business Nhưng UserServiceImpl phát triển qua thời gian dài, nên việc sửa code khó khăn, lúc đó, tạo UserServiceImplNew implement UserService triển khai code tách bạch khỏi UserServiceImpl Sau đó, cần thay đổi việc sử dụng UserServiceImplNew thay UserServiceImpl mà khơng cần chỉnh sửa code chỗ khác Những chỗ khác sử dụng UserServiceImpl mà khơng có nhu cầu chỉnh sửa sử dụng, khơng có chỉnh sửa UserServiceImpl nên yên tâm tính hoạt động cũ Create Đến với chức đầu tiên, cần tạo hàm createUser dùng để tạo lưu record User xuống database Các bạn tùy ý thêm mã kiểm tra khác email có hợp lệ khơng, email có tồn trước hay chưa, sau sử dụng method save() để lưu xuống database Chú ý: Khi sử dụng H2 project Spring Boot mặc định cấu hình tự động cho bạn sử dụng database H2-mem, nghĩa tắt ứng dụng liệu bị Update