Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
3,87 MB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TP.HCM MỤC LỤC BÁO CÁO CUỐI KÌ MƠN AN TỒN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU Đề tài : Xây dựng website quản lý bảo hành xe máy có sử dụng bảo mật an tồn Web & CSDL Nhóm sinh viên thực : Nguyễn Minh Thuận Lớp : Nguyễn Ngọc Tiểu Long Phạm Mạnh Cường Trần Đặng Khánh Trình D19CQAT01-N Thành phố Hồ Chí Minh, Ngày 20 tháng 12 năm 2022 I LỜI MỞ ĐẦU II XÁC ĐỊNH YÊU CẦU III TỔNG QUAN XÂY DỰNG ĐỀ TÀI WEB IV ÁP DỤNG AN TOÀN BẢO MẬT WEB V ÁP DỤNG AN TOÀN BẢO MẬT CSDL VI CODE VÀ DEMO VII PHÂN CÔNG NHIỆM VỤ CỦA TỪNG THÀNH VIÊN Lời mở đầu Trong thời đại công nghệ phát triển nay, việc đảm bảo an ninh thông tin không gian mạng vấn đề dành nhiều quan tâm Nguy an tồn thơng tin mối đe dọa lớn ngày gia tăng an ninh quốc gia Có nhiều mục tiêu mà tin tặc thường nhắm tới máy chủ dịch vụ mạng, hệ thống sở hạ tầng mạng Trong hệ thống website mục tiêu phổ biến tính phổ cập dễ tiếp cận tin tặc Do việc bảo mật cho website trọng đặt yêu cầu đặc biệt việc kiểm thử Trước vấn đề đặt nhóm chúng em cố vấn Thầy Ths.” ” tìm giải pháp cho ứng dụng web thông qua số kỹ thuật bảo mật ứng dụng web & csdl II A XÁC ĐỊNH YÊU CẦU Đảm bảo an toàn bảo ứng dụng web Dựa vào danh sách dạng công thường gặp lên web Chèn mã HTML Cross-Site Scripting (XSS) Cross-Site Request Forgery (CSRF) Tấn công chèn mã SQL (SQL Injection) Tấn công vào chế xác thực (Authentication attacks) Tấn công lợi dụng khiếm khuyết thiết kế (Logic attacks) Tấn cơng trình duyệt web riêng tư người dùng Một số case-studies lỗ hổng công ứng dụng web Dựa theo danh sách biện pháp Xác thực người dùng trao quyền truy nhập Bảo mật phiên làm việc Bảo mật máy chủ web Bảo mật sở liệu web Bảo mật hệ thống file Bảo mật trình duyệt web B Đảm bảo an toàn bảo mật CSDL Các yêu cầu bảo mật CSDL Tính bí mật Tính tồn vẹn Tính sẵn dùng Dựa vào danh sách 10 lỗ hổng CSDL thực tế Default and Weak Password (Các mật yếu ngầm định) SQL Injection in the DBMS (Lỗi chèn mã SQL) Excessive User & Group Privileges (Đặc quyền mức cho người dùng nhóm người dùng) Unnecessary Enabled DBMS Features (Cho phép tình khơng sử dụng DBMS) Broken Configuration Management (Quản lý cấu hình lỗi) Buffer Overflows (Lỗi tràn đệm) Priviledge Escalation (Leo thang đặc quyền) Denial of Service (Tấn công từ chối dịch vụ) Unpatched Database (CSDL không vá) 10.Unencrypted Data (Dữ liệu khơng mã hóa) III TỔNG QUAN XÂY DỰNG ĐỀ TÀI WEB - Với đề tài “Xây dựng website quản lý bảo hành xe máy có sử dụng bảo mật an toàn web CSDL” chúng em xây dựng sau: - Về ngôn ngữ lập trình Java, SQL Server, Framework: Springboot, Bootstrap - Về giao diện Gồm phần Frontend: Trang chủ,Trang Đăng nhập, quản lí khách hàng, quản lí nhân viên, Quản lí xe khách, quản lí phiếu bảo hành Backend: xây dựng mơ hình MVC : Model-view-controller Cơ sở liệu : Dùng SQL Server để quản lí thơng tin sản phẩm, thơng tin người sử dụng(admin, user, người dùng, ) Màn hình đăng nhập Giao diện cho khách - Trang chủ website: - Xem trạng thái bảo hành xe: - Kiểm tra thời hạn bảo hành: - Yêu cầu bảo hành: Giao diện cho nhân viên * Thực chức gồm có: - Quản lý khách hàng: + Thêm khách hàng: + Chỉnh sửa thông tin khách hàng: + Thêm nhân viên: + Chỉnh sửa thông tin nhân viên: + Xóa nhân viên: - Về tính Gồm “4” tính năng: - Tính đăng nhập cho user, admin - Tính nhân viên (Hiệu chỉnh quản lí xe, phụ tùng, phiếu bảo hành, ) - Tính admin(Quản lí nhân viên,accounts, tồn quyền quản lí hàng) - Tính cho người dùng (xem trạng thái bảo hành, thêm yêu cầu bảo hành, kiểm tra tình trạng bảo hành, ) - Quản lý loại phụ tùng: + Thêm loại phụ tùng: + Chỉnh sửa thông tin loại xe: + Xóa loại xe: - Quản lý phụ tùng: + Thêm phụ tùng: + Chỉnh sửa phụ tùng: + Xóa phụ tùng: IV ÁP DỤNG AN TỒN BẢO MẬT WEB - Dựa vào q trình học chúng em xây dựng biện pháp bảo mật web dựa Spring Security, là: - Xác thực người dùng quyền truy cập - Bảo mật sở liệu web - cụ thể thông qua method từ thư viên Spring Security sau: Method mà xem xét : protected void configure(HttpSecurity http) throws Exception phương pháp để Bảo mật phiên làm việc protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() // Các trang không yêu cầu login vào admin hay user guest vào trang antMatchers("/WEB/**").permitAll() // Trang /manager yêu cầu phải login với vai trò USER ADMIN antMatchers("/manager/**").hasAnyAuthority("USER", "ADMIN") // Trang dành cho ADMIN antMatchers("/admin/**").hasAnyAuthority("ADMIN") anyRequest().authenticated() // and() // Cấu hình cho Login Form formLogin() // Submit URL trang login loginProcessingUrl("/j_spring_security_check") //cấp quyền nhập cho trnag login loginPage("/login").permitAll() //đây Khi đăng nhập thành cơng vào trang userAccountInfo khai báo controller để hiển thị trang view tương ứng name='username' name='password' // rolefail"); rolefail defaultSuccessUrl("/manager/customers" ,true) // Khi đăng nhập sai username password nhập lại failureUrl("/login?error" ) // tham số nhận từ form login bước có input usernameParameter("username") // tham số nhận từ form login bước có input passwordParameter("password") // Cấu hình cho Logout Page Khi logout trả trang and() logout() logoutUrl("/logout") logoutSuccessUrl("/login") and() Khi người dùng login, với vai trò user exceptionHandling().accessDeniedPage( "/login? // Nhưng cố ý truy cập vào trang admin // Ngoại lệ AccessDeniedException ném // Ở tạo thêm trang web hiển thị lỗi //CSRF ( Cross Site Request Forgery) kĩ thuật công cách sử dụng quyền chứng thực người sử dụng website khác http.csrf().disable(); //để vơ hiệu hóa tùy chọn khung (frame) trình duyệt giúp ngăn chặn công bảo mật phishing clickjacking //Ngồi ra, việc vơ hiệu hóa tùy chọn khung giúp ngăn chặn việc sử dụng trang web bạn khung trang web khác mà không phép, đảm bảo trang web bạn hiển thị trình duyệt dạng trang web độc lập http.headers().frameOptions().disable(); } Method thứ public PasswordEncoder passwordEncoder() Method dùng để mã hoá password người dùng phương pháp Bảo mật sở liệu web @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } Để áp dụng phương pháp Xác thực người dùng quyền truy cập chúng em sử dụng mothod sau Method thứ protected void configure(AuthenticationManagerBuilder auth) throws Exception, public UserDetailsService userDetailsService()nó nắm giữ thơng tin quan trọng Username hệ thống , UserName có quyền @Bean public UserDetailsService userDetailsService () { return new UserDetailsServiceImpl(); } Với @Service public class UserDetailsServiceImpl implements UserDetailsService { @Autowired AccountService accountService; @Autowired HttpSession session; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { TaiKhoan user = accountService.getUserByUsername(username); System.out.println(user); if (user == null) { throw new UsernameNotFoundException("Could not find user"); } if(user.isEnabled()){ session.setAttribute("username",user.getUsername()); Object ruri = session.getAttribute( "redirect-uri" ); if(ruri != null ){ session.removeAttribute("redirect-uri" ); } return new MyUserDetails(user); } else { throw new UsernameNotFoundException("Account is disabled"); } } //Phương thức xác định user có quyền hệ thống @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(authenticationProvider()); } @Bean public DaoAuthenticationProvider authenticationProvider() { DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(); authProvider.setUserDetailsService(userDetailsService()); authProvider.setPasswordEncoder(passwordEncoder()); return authProvider; } Sử dụng recapcha để xác thực người dùng thật Ta có class sau: public class ReCaptchaResponse { private boolean success ; private String challenge_ts; private String hostName; public boolean isSuccess() return success; { } public void setSuccess( boolean success) this.success = success; { } public String getChallenge_ts() return challenge_ts; { } public void setChallenge_ts(String challenge_ts) this .challenge_ts = challenge_ts; } public String getHostName() return hostName; } { { } public void setHostName(String this .hostName = hostName; hostName) { } - Với ta đặt: #recaptcha recaptcha.key=6LcVkC4jAAAAAOvR428AXgFup1_FB4Un5whZhXEW recaptcha.secret=6LcVkC4jAAAAACb-QXqma_aeYmTjBiXn6H51Hz7_ recaptcha.url=https://www.google.com/recaptcha/api/siteverify - Do đó, biện pháp tham gia vào việc giải dạng công sau : - Cross-Site Request Forgery (CSRF) Tấn công chèn mã SQL (SQL Injection) Tấn công vào chế xác thực (Authentication attacks) Tấn công lợi dụng khiếm khuyết thiết kế (Logic attacks) Tấn cơng trình duyệt web riêng tư người dùng Một số case-studies lỗ hổng cơng ứng dụng web V ÁP DỤNG AN TỒN BẢO MẬT CSDL - Và kỹ thuật áp dụng vào ứng dụng chúng em gồm Xác thực, trao quyền bảo mật mật Bảo mật đối tượng CSDL Sử dụng mã hóa CSDL Mơ hình bảo mật hệ quản trị CSDL (MySQL,Oracle,Microsoft SQL Server) Sau sơ đồ Diagram thực thể entities tham gia vào dự án: - Trong đó: Tính tồn vẹn thể qua Liên kết thực thể users bao gồm user_roles với loại user (admin,nhanvien,khachhang) có phân quyền riêng với roles - Để đảm bảo Phương pháp Xác thực, trao quyền bảo mật mật Database chúng em thiết lập password phân quyền SQL Server cụ thể sau: - AdminQLBHX : Tồn quyền - Sqluser2 : phép thêm,sửa xóa.(Cụ thể khách hàng, xe, loại xe, phụ tùng, phiếu bảo hành) - Sqluser1: Chỉ phép xem - Guest : Chỉ xem phiếu bảo hành, xe - Sử dụng mã hóa CSDL Các thơng tin password ccuaruser lưu database dạng mã hóa VI CODE VÀ DEMO - Source Code : - Video Demo : VII PHÂN CÔNG VÀ NHIỆM VỤ CỦA TỪNG THÀNH VIÊN STT Họ tên Nguyễn Minh Thuận Nhiệm Vụ Xây dựng giao diện cho người dùng nhân viên, xây dựng tính năng(thêm,tạo,xóa,sửa) phát triển mã hóa, phân quyền cho users Database Nguyễn Xây dựng Database, xây dựng hệ thống xác Ngọc Tiểu thực capcha, thiết kế xây dựng đồ án mơn Long học hồn chỉnh (dạng word) Thời gian hoàn thành 13/12/2022 17/12/2022