Spring

[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) CSRF, CsrfFilter - ๋กœ๊ทธ์•„์›ƒ ์˜ˆ์ œ

2023. 11. 20. 13:19
๋ชฉ์ฐจ
  1. ๊ณต๊ฒฉ์˜ ์œ„ํ—˜์„ฑ
  2. CsrfFilter
  3. Post ๋ฐฉ์‹ ์‚ฌ์šฉ ์˜ˆ์‹œ

๊ณต๊ฒฉ์˜ ์œ„ํ—˜์„ฑ

ํ•ด๋‹น ๋กœ์ง์„ ํ†ตํ•ด์„œ ํ•ด์ปค๋“ค์ด ๊ณต๊ฒฉ์„ ํ•œ๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ ์‡ผํ•‘๋ชฐ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ๋‚˜์„œ ์ฟ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  • ๊ณต๊ฒฉ์ž๊ฐ€ ๋งํฌ๋ฅผ ์ด์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์‚ฌ์šฉ์ž๋Š” ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ๊ณต๊ฒฉ์šฉ ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ•œ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ ๊ณต๊ฒฉ์šฉ url์„ ์—ด๊ณ  ์‡ผํ•‘๋ชฐ์€ ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์˜์‹ฌํ•˜์ง€ ์•Š๊ณ  ์ธ์ฆ์„ ํ•œ๋‹ค.

 

์‹œํ๋ฆฌํ‹ฐ๋Š” ์ด๋Ÿฐ ๊ณต๊ฒฉ ๋ฐฉ์‹์„ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ CsrfFilter๋ฅผ ๋งŒ๋“ค์–ด์„œ csrf์˜ ์ทจ์•ฝ์ ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์žˆ๋‹ค.

 

CsrfFilter

  • ๋ชจ๋“  ์š”์ฒญ์— ๋žœ๋ค ํ•˜๊ฒŒ ์ƒ์„ฑ๋œ ํ† ํฐ์„ HTTP ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์š”๊ตฌ
  • ์š”์ฒญ ์‹œ ์ „๋‹ฌ๋˜๋Š” ํ† ํฐ ๊ฐ’๊ณผ ์„œ๋ฒ„์— ์ €์žฅ๋œ ์‹ค์ œ ๊ฐ’๊ณผ ๋น„๊ตํ•œ ํ›„ ๋งŒ์•ฝ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ์€ ์‹คํŒจํ•จ
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />

HTTP ๋ฉ”์†Œ๋“œ : PATCH, POST, PUT, DELETE ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น csrf ํ† ํฐ์„ hidden์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์„œ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ๋จ โ†’ ์•ˆ ๊ทธ๋Ÿฌ๋ฉด accessDeniedHandler์— ๊ฑธ๋ ค์„œ ์ ‘์†ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•จ

  • form๋ฐฉ์‹์œผ๋กœ ํ• ๊ฑฐ๋ฉด formํƒœ๊ทธ ์•ˆ์— ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™๋œ๋‹ค.

 

 

โž• ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋น„ํ™œ์„ฑํ™”๋œ๋‹ค.

http.csrf().disabled() // ๋น„ํ™œ์„ฑํ™”

 

 

 

Post ๋ฐฉ์‹ ์‚ฌ์šฉ ์˜ˆ์‹œ

๋กœ๊ทธ์•„์›ƒ์€ ํผํƒœ๊ทธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ๋œ๋‹ค.

 

html

<form class="logout" id="logout" th:action="@{/logout}" method="POST">
	<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
</form>

 

 

javascript

document.getElementById('logoutBtn').addEventListener('click', function (){
	document.getElementById('logout').submit();
});

 

 

SecurityConfig

.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")

 

 

 


ํ•ด๋‹น ๊ธ€์€ ์ธํ”„๋Ÿฐ์˜ ์Šคํ”„๋ง์‹œํ๋ฆฌํ‹ฐ-Spring Boot ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” Spring Security๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] Spring Cache(์Šคํ”„๋ง ์บ์‹œ)๋ž€?  (0) 2024.02.19
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ์‚ฌ์šฉ์ž DB ๋“ฑ๋ก ๋ฐ PasswordEncoder  (2) 2023.11.22
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ExceptionTraslationFilter, RequestCacheAwareFilter  (0) 2023.11.15
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๊ถŒํ•œ์„ค์ •๊ณผ ํ‘œํ˜„์‹  (0) 2023.11.09
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๋™์‹œ ์„ธ์…˜ ์ œ์–ด, ์„ธ์…˜ ๊ณ ์ • ๋ณดํ˜ธ, ์„ธ์…˜ ์ •์ฑ…  (0) 2023.11.06
  1. ๊ณต๊ฒฉ์˜ ์œ„ํ—˜์„ฑ
  2. CsrfFilter
  3. Post ๋ฐฉ์‹ ์‚ฌ์šฉ ์˜ˆ์‹œ
'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring] Spring Cache(์Šคํ”„๋ง ์บ์‹œ)๋ž€?
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ์‚ฌ์šฉ์ž DB ๋“ฑ๋ก ๋ฐ PasswordEncoder
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ExceptionTraslationFilter, RequestCacheAwareFilter
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๊ถŒํ•œ์„ค์ •๊ณผ ํ‘œํ˜„์‹
DAHLIA CHOI
DAHLIA CHOI
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผ
DAHLIA CHOI
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… (5)
    • ํšŒ๊ณ  (0)
    • ๊ธฐํƒ€ (5)
    • FRENCH (1)
    • ํ•„์‚ฌ (2)
    • ๊ฒฝํ—˜ (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
DAHLIA CHOI
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) CSRF, CsrfFilter - ๋กœ๊ทธ์•„์›ƒ ์˜ˆ์ œ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.