MỤC LỤC
Tất cả PreAuthorize, RolesAllowed và Secured đều là các annotation cho phép bạn cấu hình bảo mật phương thức. Chúng có thể được áp dụng cho từng phương thức riêng lẻ hoặc trên cấp độ lớp, trong trường hợp sau, các ràng buộc bảo mật sẽ được áp dụng cho tất cả các phương thức trong lớp. - Cho phép sử dụng biểu thức Spring Expression Language (SpEL) để đánh giá điều kiện truy cập phức tạp trước khi phương thức được thực thi. - Có tính linh hoạt cao nhất trong ba, vì nó cho phép kiểm soát dựa trên các thuộc tính của đối tượng được truyền vào, trạng thái bảo mật, và các điều kiện khác. principal.userId") cho phép truy cập nếu người dùng có vai trò là ADMIN hoặc là USER và ID người dùng trùng với ID trong phiên làm việc.
- Đơn giản hơn, chỉ định cụ thể các vai trò bảo mật mà người dùng phải có để thực thi phương thức. - Tính linh hoạt thấp hơn so với PreAuthorize vì nó không hỗ trợ biểu thức phức tạp, chỉ có thể chỉ định các vai trò. - Tương tự như Secured, nhưng là một phần của tiêu chuẩn Java EE và không bị giới hạn chỉ trong Spring.
- Tính linh hoạt: Tương tự như Secured, chỉ cho phép liệt kê các vai trò.
Cấu hình Spring Security: Tạo lớp khởi tạo và cấu hình Spring Security (ví dụ: SecurityInitializer, WebSecurityConfig).
Là một kỹ thuật cho phép hacker có thể chiếm đoạt session của người dùng. Kỹ thuật này lợi dùng việc server không thay đổi giá trị session ID mỗi khi người dùng đăng nhập, thay vào đó sử dụng session ID sẵn có trước đó.
Tránh sử dụng session ID dựa trên thông tin dễ đoán như thời gian, địa chỉ IP hoặc thông tin dễ dàng thu được từ nạn nhân. Sử dụng HTTPS để mã hóa dữ liệu giữa máy khách và máy chủ, bảo vệ session ID khỏi việc bị đánh cắp trong quá trình truyền. Khi người dùng thực hiện các hoạt động quan trọng hoặc nhạy cảm, hãy xác thực lại session ID để đảm bảo rằng không bị làm giả.
Cung cấp thông báo cho người dùng khi họ đăng nhập từ một thiết bị hoặc địa chỉ IP mới, kích hoạt các cơ chế bảo vệ như xác minh hai bước.
Clickjacking tấn công bằng cách bao bọc trang web mà người dùng tin tưởng bởi iframe, sau đó render ẩn phần tử này lên trên cùng. Để chắc chắn trang web của bạn đang không bị lạm dụng bởi Clickjacking, bạn cần chắc rằng iframe chỉ được sử dụng cho những trang an toàn. Frame-Killing Trên các trình duyệt cũ, cách thường được sử dụng để bảo vệ người dùng khỏi clickjacking là thêm frame-killing JavaScript snippet vào pages.
Khi trang web load, đoạn code trên sẽ kiểm tra domain của trang gốc có khớp với domain của cửa sổ trình duyệt hay không, nếu pass qua bước check thì được phép hiển thị.
●Khi người dùng đăng nhập vào một trang web (ví dụ như ngân hàng trực tuyến) và nhận được một cookie chứa thông tin chứng thực. Miễn là cookie này còn hiệu lực, các yêu cầu gửi tới trang web sẽ tự động được xác thực. ●Trong khi người dùng đã đăng nhập vào trang web hợp pháp, họ vô ý truy cập vào một trang web độc hại hoặc nhận được một email có chứa một liên kết độc hại.
●Trang web độc hại này tạo ra các yêu cầu tới trang web hợp pháp mà người dung không hề hay biết. Yêu cầu này có thể là thực hiện chuyển khoản, thay đổi thông tin cá nhân, tài khoản hoặc bất kỳ hành động nào mà người dùng có quyền thực hiện trên trang đó. ●Khi trình duyệt của người dùng tải trang độc hại và thực hiện yêu cầu giả mạo, nó tự động gửi cookie chứng thực cùng với yêu cầu đến trang web hợp pháp.
Do đó, trang web hợp pháp không thể phân biệt đâu là yêu cầu thật sự từ người dùng và đâu là yêu cầu được tạo ra bởi kẻ tấn công. ●Trang web hợp pháp nhận yêu cầu và thực thi yêu cầu nó như thể nó đến từ người dùng chính thức, dẫn đến các hậu quả không mong muốn.
●Cách mạnh mẽ nhất để có thể chống tấn công CSRF chính là có thêm các CSRF token bên trong những request liên quan. Được xác thực nghiêm ngặt trong mọi trường hợp, trước khi hành động liên quan được thực hiện. Security cung cấp cách tiếp cận linh hoạt để kích hoạt và tùy chỉnh bảo vệ.
● Với cấu hình như vậy, bất kỳ một request nào, ứng dụng sẽ kiểm tra csrf token được gửi tới so với csrf token được lưu trữ trên sever, nếu token này không hợp lệ thì request sẽ được cho là không hợp lệ và không thực hiện quest này.