1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

78 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề 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
Tác giả Nguyễn Thế Thịnh, Huỳnh Đức Linh, Trần Tiến Đức, Phạm Thị Mai Anh, Lê Thị Mỹ Tiên
Định dạng
Số trang 78
Dung lượng 20,32 MB

Nội dung

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ấtYêu cầu xác thực cho mọi URL trong ứng dụng của...  Sử dụng Spring Security Lambda DSL Do

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 | FAQ s

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

Trang 4

GIỚI THIỆU VỀ SRING

SECURITY

1.1

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

Trang 5

Spring

Security Spring 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

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

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

Seccurity

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 12

Authenticati on

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

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

n

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

- 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ả

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ươ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ò

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

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

0 3

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.

o Quả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

0 6

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

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

nhâ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

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

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().newSes

sion()

sessionFixation().newSessio

n() 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

DEMO THỰC TIỄN

Trang 42

3.2 KỊCH BẢN

2

Clickjackin

g

Trang 43

KHÁI NIỆM LỖ

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

0 5

Trang 45

LÀ 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 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

chuột

 Để 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 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 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-Options X-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

clickjacking

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

Nó được thiết kế như là cách để liệt

kê các tên miền có thể sử dụng tài

nguyên như là stylesheets, fonts,

script được phép nhúng.

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-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ị

Trang 58

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

CÔNG CLICKJACKING

Khai báo cấu hình khởi tạo Spring

Security

“SecurityInitializer” không cần phải định nghĩa bất kỳ phương thức nào;

việc kế thừa AbstractSecurityWebApplicationInitializer và đánh dấu

nó với @Configuration là đủ để kích hoạt cấu hình mặc định.

Trang 59

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

CÔNG CLICKJACKING Cấu hình Spring Security với X-Frame-Options header

Spring Security cung cấp HTTP Header

X-Frame-Options để ngăn chặn clickjacking, có 3

giá trị có thể dùng để ngăn chặn:

SAMEORIGIN: Chỉ cho phép trang web nhúng

frame nếu nó được tải từ cùng một nguồn (origin)

như trang web gốc

ALLOW-FROM URI: Cho phép nhúng trang web

trong iframe từ một nguồn cụ thể

DENY: Ngăn chặn hoàn toàn việc nhúng trang web

trong iframe

Trang 60

DEMO THỰC TIỄN

3.2.

5

CLICKJACKING

Trang 62

KHÁI NIỆM LỖ

HỔNG

CÁCH THỨC HOẠT ĐỘNG CỦA CSRF

ỨNG DỤNG CÔNG NGHỆ SPRING

SECURITY ĐỂ NGĂN CHẶN TẤN

CÔNG CSRF

DEMO THỰC TIỄN

0

1

0 2

0

Trang 64

CSRF LÀ GÌ ?

● Tấn công kiểu CSRF

(Cross Site Request Forgery),

còn được gọi là XSRF, Sea

Surf hay Session Riding, là

một kỹ thuật tấn công mà qua

đó kẻ tấn công lừa trình duyệt

web thực hiện các hành động

không mong muốn trên một

ứng dụng mà người dùng đã

đăng nhập vào.

Trang 65

CSRF LÀ GÌ ?

● Một cuộc tấn công CSRF thành công có thể gây ra hậu quả nghiêm

trọng cho cả doanh nghiệp và người dùng Nó có thể dẫn đến việc làm hỏng mối quan hệ với khách hàng, chuyển tiền không được ủy quyền, thay đổi mật khẩu và trộm cắp dữ liệu — bao gồm cả cookie phiên làm việc.

● Các cuộc tấn công CSRF thường được thực hiện thông qua các thủ thuật xã hội độc hại, chẳng hạn như email hoặc liên kết mà lừa nạn nhân gửi yêu cầu giả mạo đến máy chủ Vì người dùng không hề biết mình đang được xác thực bởi ứng dụng tại thời điểm bị tấn công, nên không thể phân biệt được đâu là yêu cầu hợp pháp và đâu là yêu cầu giả mạo.

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

w