[์ผ] S3์ ์ ๋ก๋ํ ์ฌ์ง : ์ด๋ฏธ์ง ํซ๋งํฌ ๋ฐฉ์ง ๊ณผ์ (3)
์ ์ด๋๊ฐ ๋ฌธ์ ์ธ์ง ํ์ธํด๋ณด์
๊ฐ์ค1. CloudFront-Policy, CloudFront-Signature, CloudFront-Key-Pair-Id ๋ฅผ ์์ฑํ๋ ๋ก์ง์ด ์๋ชป๋์์ ๊ฒ์ด๋ค.
โ ๏ธ ์ฟ ํค๋ฅผ ์ค์ ํ์ฌ Postman์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ณด๋๋ฐ ๋๋ฝ๋ ํค ์ ID ์ฟผ๋ฆฌ ๋งค๊ฐ ๋ณ์ ๋๋ ์ฟ ํค ๊ฐ ์ด๋ผ๋ ๋ฉ์์ง๊ฐ ๋ฆฌํด๋์๋ค
๐งฐ ๊ฐ์ธํค๋ฅผ ๋ก๋ํ๋ ์ฝ๋์์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Bouncy Castle)๋ฅผ ์ฌ์ฉํ์ฌ PEMํ์ผ์ ์ฝ์ด์ค๋๋ก ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์๋ค
๐งฐ ์ง์ ๊ตฌํํ์์ผ๋ =์ _๋ก ๋ณ๊ฒฝํ๋ ๋ฑ ์๊ตฌ์ฌํญ์ด ๋ง์ CloudFrontUtilities (getCookiesForCustomPolicy) ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค

API ๋ํผ๋ฐ์ค : CloudFrontUtilites
https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/cloudfront/CloudFrontUtilities.html#getCookiesForCustomPolicy(java.util.function.Consumer)
CloudFrontUtilities (AWS SDK for Java - 2.30.16)
AWS SDK for Java API Reference - 2.30.16
sdk.amazonaws.com
โ ๏ธ์ด๋ฌ์์๋ Postman์ผ๋ก ์์ฒญ ๋ณด๋์ ๋ Access Denied ๊ฒฐ๊ณผ๊ฐ ๋์๋ค
๊ฐ์ค2. CloudFront-Policy, CloudFront-Signature, CloudFront-Key-Pair-Id ์ฟ ํค๊ฐ CloudFront๋ก ์ด๋ฏธ์ง ์์ฒญ์ ๋ณด๋ผ ๋ ๊ฐ์ด ๋ณด๋ด์ง์ง ์์ ๊ฒ์ด๋ค.
ํ์ฌ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ๋ฉด, SignedCookie ๊ฐ ๋ฐ๊ธ๋์ด Cookie์ ์ ์ฅ๋๋ค
โ ๏ธ ํด๋ผ์ด์ธํธ๊ฐ CloudFront๋ก ์ด๋ฏธ์ง ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ฅผ ๊ฐ์ด ๋ณด๋ด์ผ ํ๋๋ฐ ์ ๋ณด๋ด๊ณ ์๋ ๊ฒ์ ํ์ธํ์๋ค
1) ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ ํ์ set-cookie๊ฐ ๋๋์ง ํ์ธํ์๋ค
set-cookie๊ฐ ์๋๊ณ ์์์ ๋ฐ๊ฒฌํ์๊ณ , Cookie ์ ์ฑ
์ ๋ํด ๊ณต๋ถํ๋ค
์๋ ๊ฐ๋
๊ธ ์ฐธ๊ณ )
https://eundms.tistory.com/entry/CORS-%EC%BF%A0%ED%82%A4-%EC%84%A4%EC%A0%95-SameSite-%EC%A0%95%EC%B1%85-Path%EC%99%80-Domain
์ฟ ํค, CORS, Referer, CSP ์ ์ฑ : SameSite, Path, Domain
๋ณธ๋ฌธ ์ ๋ชฉ ์ฟ ํค, CORS, Referer, CSP ์ ์ฑ : SameSite, Path, Domain by :๋ถ์ ์ ธ๋ฒ๋ฆฐ๊ฐ๋ฐ์ 2025. 2. 11. 17:12 in ๋ณดํธ๊ธ
eundms.tistory.com
๐งฐ ๊ทธ๋ฆฌ๊ณ , ์๋์ ๊ฐ์ด SameSite ์ค์ ์ ์ถ๊ฐํ์๋ค
String cookieWithSecurity = cookie + "; SameSite=None; Secure; HttpOnly; Path=/";
โ
๊ทธ๊ฒฐ๊ณผ ๋ก์ปฌ ํ๊ฒฝ์์ set-cookie ๊ฐ ๋๋ ๊ฒ์ ํ์ธํ์๋ค
โ ๏ธ์ด์ ํด๋น ์ฟ ํค๋ฅผ CloudFront ์์ฒญ์ ๋ณด๋ผ ๋ ๋ณด๋ด๋์ง ํ์ธํด๋ดค๋๋ ์๋ณด๋ด์ง๊ณ ์์๋ค
๐งฐ next/image๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ธฐ ๋๋ฌธ์ custom-loader.js ๋ฅผ ์ถ๊ฐํ๊ณ
CloudFront ๋๋ฉ์ธ์ผ๋ก ๋ค์ด์ค๋ ์์ฒญ์ Next.js์ API ์๋ํฌ์ธํธ๋ก ํ๋ก์ํ์ฌ ์ ๋ฌํ์๋ค.
๊ทธ ํ, Next.js์ API ์๋ํฌ์ธํธ์์๋ ํ์ํ ์ฟ ํค๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํ์ฌ ์ด๋ฏธ์ง๋ฅผ CloudFront๋ก ์์ฒญํ์๋ค.
โ
๊ทธ๋ ๊ฒ ๋ก์ปฌ ํ๊ฒฝ์์๋ ์ ์ฉ์ด ๋จ์ ํ์ธํ ์ ์์๋ค
โ ๏ธ ํ์ง๋ง, ๋ฐฐํฌ ํ ํ์ธํด๋ณด๋ set-cookie๊ฐ ์๋๊ณ ์์์ ํ์ธํ ์ ์์๋ค
Domain ์์ฑ์ ์ ์ง ์์ผ๋ฉด ์๋์ผ๋ก set-cookie๋ฅผ ์งํํ ๋๋ฉ์ธ์ผ๋ก ์ค์ ์ด ๋๋ ๊ฒ ๊ฐ์๋ค
https://developer.mozilla.org/en-US/docs/Web/Security/Types_of_attacks#session_fixation
Types of attacks - Security on the web | MDN
This article describes various types of security attacks and techniques to mitigate them.
developer.mozilla.org
๋ก์ปฌ์์๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋๋ฉ์ธ์ด ๋ชจ๋ localhost์ด๋ฏ๋ก ๊ด์ฐฎ์ง๋ง,
๋ฐฐํฌ ํ๊ฒฝ์์๋ ์๋ฒ(api.๋๋ฉ์ธ), ํด๋ผ์ด์ธํธ(๋๋ฉ์ธ) ์ด๋ฏ๋ก ์ฟ ํค๋ฅผ ์ฌ์ฉํ ์๊ฐ ์์๋ค
๐งฐ ๋ฐ๋ผ์, ์ฟ ํค Domain์ .๋๋ฉ์ธ์ผ๋ก ์ค์ ํ์๋ค
String cookieWithSecurity = cookie + "; SameSite=None; Secure; HttpOnly; Domain=.๋๋ฉ์ธ; Path=/";
โ
๋ก์ปฌ, ๋ฐฐํฌ ํ๊ฒฝ์์ ๋ชจ๋ ํ์ธ์ด ๋์๋ค

AWS ๋ฌธ์ ํด๊ฒฐ ํ : CloudFront์ ์๋ช
๋ URL ๋๋ ์๋ช
๋ ์ฟ ํค์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
https://repost.aws/ko/knowledge-center/cloudfront-troubleshoot-signed-url-cookies
CloudFront์ ์๋ช ๋ URL ๋๋ ์ฟ ํค ๋ฌธ์ ํด๊ฒฐ
Amazon CloudFront์ ์๋ช ๋ URL ๋๋ ์๋ช ๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋น ์ฝํ ์ธ ๋ฅผ ๋ณดํธํ๊ณ ์์ต๋๋ค. 403 ์ก์ธ์ค ๊ฑฐ๋ถ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
repost.aws