xây dựng ứng dụng triển khai nền tảng spring secutiry

78 0 0
Tài liệu đã được kiểm tra trùng lặp
xây dựng ứng dụng triển khai nền tảng spring secutiry

Đ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

Trang 1

XÂY DỰNGỨNG DỤNG

TRIỂN KHAI NỀN

SECUTIRY

Trang 2

Thành viên nhóm 8:

Đề tài: Xây dựng một trang web có các tính năng an toàn bảo mật thông tin

ứng dụng công nghệ Spring Security

Nguyễn Thế Thịnh N21DCAT053 – NHÓM TRƯỞNG

Huỳnh Đức Linh N21DCAT028

Trần Tiến Đức N21DCAT014

Phạm Thị Mai Anh N21DCAT001

Lê Thị Mỹ Tiên N21DCAT056

For more info:

SLIDESGO | BLOG | FAQs

Trang 3

Cơ chế hoạt động Sự khác biệt

Khái niệm, tấn công, ngăn chặn, demo thực tiễn

Khái niệm, tấn công, ngăn chặn, demo thực tiễn

Khái niệm, tấn công, ngăn chặn, demo thực tiễn

Khái niệm, tính năng, cơ chế

Spring

Security ?Authentication &authorization

PreAuthorize, Secured và RolesAllowed

SESSION

CROSS-SITE REQUEST FORGERY

3.3

Trang 4

GIỚI THIỆU VỀ SRING SECURITY

Khái niệm, tính năng, cơ chế

Trang 5

Spring

SecuritySpring Security được xem là một trong

những framework bảo mật phổ biến nhất cho ứng dụng Java.

Spring Security được thiết kế theo kiến

trúc plugin, cho phép tùy biến linh hoạt và dễ dàng theo nhu cầu của ứng dụng và được tích hợp sẵn với các thành

phần khác của Spring Framework, như Spring Boot, Spring MVC, Spring Data, Spring Cloud, và Spring WebFlux

Trang 6

Tính Năng Hỗ Trợ:

Tích hợp API Servlet

Tích hợp tùy chọn với Spring Web MVC

Spring Security cung cấp các tính năng xác thực (authentication) và phân

quyền (authorization) cho các ứng dụng, cũng như hỗ trợ các tiêu chuẩn và giao thức bảo mật như HTTPS, OAuth2, JWT, LDAP, SAML, OpenID Connect

Bảo vệ chống lại các cuộc tấn công session fĩation, ckicljacking, cross site request

Hỗ trợ toàn diện và mở rộng cho cả Xác thực và Ủy quyền

Trang 7

Tạo một biểu mẫu đăng nhập cho bạn với tên người dùng và mật khẩu, cho phép người dung đăng xuất

Yêu cầu xác thực cho mọi URL trong ứng dụng của bạn

• Tích hợp X-Frame-Options để ngăn chặn Clickjacking

Tích hợp với các phương thức API Servlet sau:

HttpServletRequest#getRemoteUser()

HttpServletRequest#getUserPrincipal()

HttpServletRequest#isUserInRole(java.lang.String)

Trang 8

CƠ CHẾ

HOẠT ĐỘNG

Trang 9

Cơ chế Spring Security:

Spring Security hoạt động theo mô hình

client-server Khi một client gửi một request đến server, server sẽ xác thực người dùng và phân quyền để đảm bảo rằng người dùng chỉ có thể truy cập vào những tài nguyên mà họ được phép truy cập.

Cơ chế hoạt động của Spring Security dựa

trên cơ chế lọc (filter) và sự kiện (event) để can thiệp vào quá trình xử lý yêu cầu (request) và phản hồi (response) của ứng dụng web, tức là khi một yêu cầu được gửi đến ứng dụng web, nó sẽ được chuyển qua một chuỗi các bộ lọc (filter chain) do

Spring Security quản lý Cơ chế Filter Chain trong Spring Security

Trang 10

Spring

Ví Dụ: Cài đặt các phụ thuộc cần thiết cho dự án Spring Boot Dưới đây là một ví dụ về cách thêm các phụ thuộc Spring Security vào tệp

pom.xml

Trang 11

Cơ chế hoạt động

1.2

Trang 12

Authentication là quá trình xác thực thông tin của người dùng và mật khẩu để xác minh danh tính, đồng thời xác thực người dùng có quyền truy cập các dữ liệu nào đó hay không.

Authentication thường dựa trên các thông tin nhận dạng (identifier) và thông tin bí mật (credential) của người dùng hoặc ứng dụng, ví dụ như tên đăng nhập và mật khẩu, mã token, vân tay, khuôn mặt tùy theo cách tiếp cận của ứng dụng đó.

Trang 13

Authentication

Spring Security hỗ trợ xác thực thông qua một số cơ chế, bao gồm:

o Form-based authentication: Xác thực thông qua một form đăng nhập.

o HTTP Basic authentication: Xác thực thông qua các header authorization.

o Authentication via a custom login page: Xác thực thông qua một trang đăng nhập tùy chỉnh.

o Pre-authenticated authentication: Xác thực thông qua các giá trị được cung cấp từ phía máy khách.

Trang 14

Authorization

Authorization là quá trình xác định quyền truy cập của người dùng đối với các tài nguyên trong ứng dụng Khi người dùng truy cập vào một tài nguyên, Spring Security sẽ kiểm tra xem người dùng có được phép truy cập vào tài nguyên đó hay không hoặc thực hiện một hành động nào đó trong hệ thống.

Authorization thường dựa trên các thông tin về vai trò (role), nhóm (group), quyền hạn (permission), chính sách (policy) Ngoài ra, còn giúp đảm bảo rằng chỉ những người dùng hoặc ứng dụng có quyền thích hợp mới có thể truy cập vào tài nguyên hoặc thực hiện hành động được bảo vệ.

Trang 15

Authorization

Spring Security hỗ trợ phân quyền bằng cách sử dụng các thành phần sau:

- AccessDecisionManager: là một interface định nghĩa phương thức decide() để kiểm tra quyền của người dùng hoặc ứng dụng khi truy cập vào một tài nguyên hoặc thực hiện một hành động nào đó

- AccessDecisionVoter: là một interface định nghĩa phương thức vote() để đưa ra quyết định về quyền hạn của người dùng hoặc ứng dụng.

- SecurityExpressionHandler: cũng là interface định nghĩa phương thức createSecurityExpressionRoot() để tạo ra một đối tượng SecurityExpressionRoot chứa các biểu thức bảo mật cho người dùng hoặc ứng dụng.

Trang 17

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.

Sự khác biệt giữa PreAuthorize, Secured và RolesAllowed:

Ví dụ: @PreAuthorize("hasRole('ADMIN') or hasRole('USER') and #userId ==

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.

Trang 18

- Tính linh hoạt: Tương tự như Secured, chỉ cho phép liệt kê các vai trò.

Ví dụ: @RolesAllowed({"ADMIN", "USER"}) tương tự như @Secured nhưng có thể được sử dụng trong các môi trường ngoài Spring, giúp duy trì tính tương thích.

Trang 19

Sự khác biệt:

Cung cấp tính năng kiểm soát cao nhất và phức tạp nhất nhờ khả năng sử dụng SpEL, phù hợp cho các điều kiện truy cập động và chi tiết cung cấp khả năng kiểm soát tinh tế hơn đáng kể so với hai annotation kia.

Thích hợp cho các điều kiện truy cập dựa trên vai trò đơn giản

Thích hợp cho các điều kiện truy cập dựa trên vai trò đơn giản, mang lại lợi ích khi cần tính tương thích với các ứng dụng Java EE.

PreAuthorize

Trang 20

THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG

2.0

Trang 21

Kích hoạt Spring Security cho ứng dụng web.Cung cấp môi trường phát triển

thuận tiện.

Cài đặt các công cụ hỗ trợ khác

03

Trang 22

2.1 Cài đặt eclipse

• Tải và cài đặt eclipse từ trang web chính thức để tạo trang web• Cấu hình Eclipse để sử dụng Java Development Kit (JDK) phù hợp• Tạo trang web thực nghiệm bằng Spring MVC

o Tạo dự án web chưa được bảo mật bằng Maven Project.o Tích hợp Tomcat vào Eclipse và hiệu chỉnh port phù hợp.

o Bổ sung thư viện cần thiết của Spring MVC vào file pom.xml của dự án.o Cấu hình DispatcherServlet vào ứng dụng web (web.xml)

o Cấu hình ứng dụng Spring (spring-config-mvc.xml).

o Tạo các Model, View và Controller tương ứng để thực hiện trang web.

Trang 23

2.2 Cấu hình Servlet Container: Kích hoạt Spring Security

 Thêm thư viện Spring Security vào dự án. Cấu hình web.xml:

o Thêm filter SpringSecurityFilterChain.o Cấu hình filter cho các URL mong muốn.

Trang 24

2.2 Cấu hình Servlet Container: Kích hoạt Spring Security

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).

Annotate lớp với @EnableWebSecurity để kích hoạt bảo mật cho ứng dụng.

Sử dụng Spring Security Lambda DSL (Domain-Specific Language) để cấu hình:

o Quản lý xác thực: Xác định cách thức người dùng đăng nhập.

oQuản lý phân quyền: Quyền truy cập dựa trên vai trò/quyền hạn.

o Quản lý phiên: Cấu hình thời gian hết hạn phiên Xóa phiên khi người dùng đăng xuất.

o CSRF Protection: Bảo vệ khỏi tấn công CSRF.

o HTTP Headers Security: Tăng cường bảo mật bằng cách cấu hình các tiêu đề HTTP

Trang 26

KỊCH BẢN 1

SESSION FIXATION

3.1

Trang 27

Giới thiệu chung

Khái niệm Session

Ngăn chặn bằng Spring Security

Demo thực tiễn

NỘI DUNG CHÍNH

Trang 28

GIỚI THIỆU CHUNG

Trang 29

GIỚI THIỆU CHUNG

Mỗi khi đăng nhập vào một trang web bất kỳ, người dùng được cung cập một Session

Một Session thường được gắn với một mã định danh (gọi là session ID) và chứa một số thông tin của người dùng

Trang 30

Session ID

■ Giúp duy trì thông tin và trạng thái của người dùng trong suốt phiên làm việc

■ Giúp người dùng không cần phải đăng nhập lại mỗi khi truy cập các tài nguyên trên trang web

■ Giảm tải cho máy chủ

■ Nếu có được Session ID thì có thể truy cập vào tài khoản

■ Đối với các ứng dụng web lớn, việc quản lý và theo dõi các phiên làm việc có thể trở nên phức tạp

■ Dễ bị tấn công bởi các cuộc

tấn công như Session

Hijacking, Session Fixation, XSS,…

Trang 31

—SESSION FIXATION

Việc xử lý session ID không an toàn có thể khiến người dùng bị

tấn công.

Trang 32

KHÁI NIỆM

SESSION FIXATION

Trang 33

SESSION FIXATION

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 đó

Trang 34

QUÁ TRÌNH

TẤN CÔNG

Trang 35

Tạo session ID hợp lệ

Hacker đăng nhập vào trang web và nhận một

session ID

Chờ nạn nhân đăng nhập

Nạn nhân truy cập vào trang web và đăng nhập như

Mạo danh nạn nhân

Khi nạn nhân đăng nhập thành công, hacker chiếm

phiên và mạo danh nạn nhân

Khiến cho nạn nhân đăng nhập với session

ID của hacker

Dùng các kĩ thuật tấn công hoặc gửi URL độc hại chứa session ID của hacker cho nạn

CÔNG

Trang 36

ỨNG DỤNG

SPRING SECURITY

ĐỂ NGĂN CHẶN TẤN CÔNG

SESSION FIXATION

Trang 37

CÁCH NGĂN CHẶN CUỘC TẤN CÔNG

SESSION FIXATION

Sử dụng session ID ngẫu nhiên và có độ

dài đủ lớn

Làm cho việc đoán được session ID trở nên khó khăn hơn

Không sử dụng session ID có thể

đoán đượ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

Thiết lập thời gian

cho session Đặt thời gian hết hạn cho các session và yêu cầu người dùng đăng nhập lại sau một thời gian nhất định

Sử dụng HTTPS và mã hóa

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

Xác thực lại session ID

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ả

Cảnh báo và bảo vệ

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

Trang 38

CẤU HÌNH SPRING SECURITY NGĂN CHẶN TẤN CÔNG SESSION FIXATION

Trong cấu hình này,

sessionFixation().migrateSession() được sử dụng để đảm

bảo rằng session ID sẽ được thay đổi sau khi người dùng đăng nhập

Trang 39

CẤU HÌNH SPRING SECURITY NGĂN CHẶN TẤN CÔNG SESSION FIXATION

sessionFixation().newSession() tạo ra một session mới và

không copy các thuộc tính từ session cũ

Trang 40

CẤU HÌNH SPRING SECURITY NGĂN CHẶN TẤN CÔNG SESSION FIXATION

Class SecurityInitializer

Class SecurityInitializer là một lớp được đánh dấu @Configuration kế thừa từ lớp AbstractSecurityWebApplicationInitializer đảm bảo rằng Spring Security được kích hoạt một cách chính xác khi ứng dụng

khởi động

Trang 41

THỰC TIỄN

Trang 42

KỊCH BẢN 2

Clickjacking

Trang 43

KHÁI NIỆM LỖ

KỊCH BẢN TẤN CÔNG

NGĂN CHẶN BẰNG SPRING SECURITY

DEMO THỰC TIỄN

05

Trang 44

Khái niệm lỗ hổng:

CLICKJACKING

Trang 45

CLICKJACKINGLÀ GÌ Clickjacking là một hình thức tấn

công đánh lừa người dùng nhấp chuột vô ý vào một đối tượng trên website Khi nhấp chuột vào một đối tượng trên màn hình, người dùng nghĩ rằng mình đang click vào đối tượng đó nhưng thực chất họ đang bị lừa click vào một đối tượng khác đã bị làm mờ hay ẩn đi.

 Kẻ tấn công có thể sử dụng kỹ thuật tấn công này cho nhiều mục đích khác nhau như đánh cắp tài khoản, lừa click vào quảng cáo để kiếm tiền, phát tán malware bằng cách chuyển hướng người dùng tới link download chương trình độc hại

Trang 46

KỸ THUẬT TẤN CÔNG

CLICKJACKING

Trang 47

Che giấu đối tượng mục tiêu

Sử dụng thuộc tính CSS opacity (làm cho các iframe trong suốt) để che giấu đối tượng web cần click vào và z-index để hiển thị đối tượng web dùng để lừa.

Lấy đối tượng dùng để đánh lừa phủ lên đối tượng mục tiêu và sử dụng thuộc tính CSS pointer-events: none để vô hiệu hóa thao tác nhấp chuột lên đối tượng dùng để đánh lừa.

Partial Overlays: Chèn trang web mục tiêu vào iframe và phủ lên đối tượng mục tiêu bằng các đối tượng giả mạo: sử dụng thuộc tính CSS z-index Cropping: Chèn trang web

mục tiêu vào iframe và cắt xén nội dung xung quanh.

Trang 48

Giả mạo con trỏ chuột

 Ẩn con trỏ chuột thật, thay thế bằng con trỏ chuột giả bằng cách sử dụng

thuộc tính CSS cursor: none và sử dụng javascript để mô phỏng sự di

chuyển của con trỏ thật.

Trang 49

 Đánh lừa người dùng gõ chuỗi ký tự khi con trỏ chuột đang đặt vào các form nhập dữ liệu Kẻ tấn công có thể lừa người dùng nhập vào một số thông tin không mong muốn vào trang web mục tiêu.

Trang 50

Chèn đối tượng mục tiêu khi người dùng đang nhấp

 Để tấn công bằng kỹ thuật này, kẻ tấn công có thể lừa người dùng tham gia trò chơi (whack-a-mole) yêu cầu nhấp chuột nhanh nhất.

Trang 51

QUY TRÌNH TẤN CÔNG

CLICKJACKING

Trang 52

Trang web mục tiêu phải có các yếu tố có thể tương tác chẳng hạn như nút bấm hoặc liên kết

Trang web mục tiêu phải cho phép được nhúng trong một khung (iframe)

ĐIỀU KIỆN TẤN CÔNG

Trang 53

Kẻ tấn công đã có được tài khoản của người dùng

Nếu người dùng nhập thông tin đăng nhập của mình vào trang giả mạo này, thông tin sẽ được gửi trực tiếp cho kẻ tấn công

Dụ dỗ người dùng tương tác Tuy nhiên, hành động nhấp chuột này đã bị kẻ tấn công chiếm đoạt.

Trang 54

ỨNG DỤNG SPRING SECURITY

ĐỂ NGĂN CHẶN TẤN CÔNG

CLICKJACKING

Trang 55

Luôn kiểm tra URL trước khi

mới nhất

ĐỐI VỚI NGƯỜI DÙNG

Trang 56

ĐỐI VỚI NHÀ PHÁT TRIỂN

 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

X-Frame-OptionsX-Frame-Options HTTP header có thể dùng để biểu thị có hoặc không cho phép trình duyệt render các thẻ như <frame>,

<iframe>, <object> Nó được thiết kế đặc biệt để chống

Content Security Policy

// không cho phép hiển thị trong frame

Content-Security-Policy: frame-ancestors 'none'

// chỉ được hiển thị trên chính website gốc

Content-Security-Policy: frame-ancestors 'self'

// được phép hiển thị trên các website được chỉ định

Content-Security-Policy: frame-ancestors *uri*

Đây là một phần của chuẩn HTML 5 giúp cung cấp phạm bi

bảo vệ rộng hơn

Trang 57

ĐỐI VỚI NHÀ PHÁT TRIỂN

 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-KillingTrê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

clickjackinglà 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ị.

Ngày đăng: 19/05/2024, 17:20

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

Tài liệu liên quan