Môn an toà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 toàn web csdl

35 2 0
Môn an toà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 toàn web  csdl

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

      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    

Ngày đăng: 24/05/2023, 05:49

Tài liệu cùng người dùng

Tài liệu liên quan