๐Ÿช ์—ฅ? ํฌ๋กฌ์€ ๋˜๋Š”๋ฐ ์‚ฌํŒŒ๋ฆฌ๋Š” ์™œ ์•ˆ ๋ ๊นŒ?

juhyeok01ยท2025๋…„ 5์›” 7์ผ
8

Project

๋ชฉ๋ก ๋ณด๊ธฐ
6/6
post-thumbnail

๐Ÿ’กSituation


ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์ง์ „ QA๋ฅผ ํ•˜๋˜ ์ค‘, ์‚ฌํŒŒ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์•„ ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋กœ๊ทธ์ธ์ด ์‹คํŒจํ•œ ์ƒํ™ฉ..

(๋‚˜๋„ ์žกํ˜”์–ด)

์ƒํ™ฉ ์ •๋ฆฌ

  • Access Token๊ณผ Refresh Token์„ HTTP-ONLY ์†์„ฑ์„ ์ ์šฉํ•˜์—ฌ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.
  • ๋กœ๊ทธ์ธ ์‹œ ์„œ๋ฒ„ ์ธก์—์„œ ์ฟ ํ‚ค์—๋‹ค๊ฐ€ Access Token์„ ๋‹ด์•„์„œ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•œ๋‹ค.
  • ์ดํ›„ ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š”๋ฐ, ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜์ง€ ๋ชปํ•ด์„œ ๋กœ๊ทธ์ธ์— ์‹คํŒจํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค.


์œ„ ์ฝ”๋“œ๋Š” ๋กœ๊ทธ์ธ ๊ด€๋ จ Service ๋ฉ”์†Œ๋“œ์ด๋‹ค.
๋กœ๊ทธ์ธ ์‹œ AccessToken๊ณผ RefreshToken์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ์žˆ๋‹ค.


์œ„ ๋ฉ”์†Œ๋“œ๋Š” AccessToken์„ ์ฟ ํ‚ค์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

์ฒ˜์Œ ์‹œ๋„ ์‹œ ์•„์ดํฐ ํ™˜๊ฒฝ์—์„œ ์‹คํŒจํ•˜์—ฌ IOS ๋ฌธ์ œ์ธ๊ฐ€? ์‹ถ์—ˆ์ง€๋งŒ, ํฌ๋กฌ์ด๋‚˜ ๊ธฐํƒ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์˜€๋‹ค.

๊ทธ๋ž˜์„œ ์•„์ดํŒจ๋“œ, ์•„์ดํฐ, ๋งฅ๋ถ์œผ๋กœ ์ „๋ถ€ ํ…Œ์ŠคํŠธํ•ด๋ณด๋‹ˆ IOS๊ฐ€ ์•„๋‹Œ ์‚ฌํŒŒ๋ฆฌ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋งฅ๋ถ์—์„œ ์‚ฌํŒŒ๋ฆฌ ๊ฐœ๋ฐœ์ž๋ชจ๋“œ๋ฅผ ์—ด์–ด์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๋ฅผ ํ™•์ธํ–ˆ๋‹ค.


์š”์ฒญ ์ฟ ํ‚ค์— ์ฟ ํ‚ค๊ฐ€ ๋‹ด๊ธฐ์ง€ ์•Š๋Š” ๋ชจ์Šต

๐Ÿ’กTask


1๏ธโƒฃ Safari ํ™˜๊ฒฝ์—์„œ ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์€ ๋‹ค์–‘ํ•œ ์ด์œ ๋ฅผ ๋ถ„์„ํ•œ๋‹ค.

2๏ธโƒฃ Safari ํ™˜๊ฒฝ์—์„œ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๋˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.

๐Ÿ’กAction


๐Ÿ“Œ ๋„๋ฉ”์ธ๊ณผ ์ฟ ํ‚ค์˜ ๊ด€๊ณ„

์ฟ ํ‚ค๋Š” HTTP์˜ stateless ์†์„ฑ์œผ๋กœ ์ธํ•ด, ์ •๋ณด๋ฅผ ์›น์‚ฌ์ดํŠธ์— ์ €์žฅํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์ฟ ํ‚ค๋Š” ์ƒ์„ฑ๋œ ๋„๋ฉ”์ธ์ด ์ข…์†๋˜๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ด๋‹น ๋„๋ฉ”์ธ์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ๋ฒˆ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž. example.com์—์„œ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ฉด,
๋‹ค์Œ ๋„๋ฉ”์ธ์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • example.com
  • www.example.com
  • blog.example.com

ํ•˜์ง€๋งŒ, ๋‹ค์Œ ๋„๋ฉ”์ธ์—์„œ๋Š” ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

  • anotherdomain.com
  • chip-sat.com

๐Ÿ“Œ ๊ทธ๋Ÿผ Chrome ๊ฐ™์€ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์™œ ๋ ๊นŒ?

๋ฐ”๋กœ SameSite ์˜ต์…˜ ๋•๋ถ„์ด๋‹ค.

SameSite๋Š” ์ฟ ํ‚ค๊ฐ€ ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ ์‹œ ์ „์†ก๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

  • Strict : ๋ฐ˜๋“œ์‹œ ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Lax: ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์œ ์ €๊ฐ€ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ์ ‘์†ํ•˜๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • None : ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

ํ˜„์žฌ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ์กด์— SameSite=None ์„ค์ •์„ ๋‘์—ˆ๋‹ค.

์œ„ ์ƒํ™ฉ ๋•๋ถ„์—, ํ”„๋ก ํŠธ์—”๋“œ์™€ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ์ด ๋ถˆ์ผ์น˜ ํ•˜๋”๋ผ๋„ ํฌ๋กฌ์ด๋‚˜ ๊ธฐํƒ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ €์žฅ์ด ๋˜์—ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, Safari์—์„œ๋Š” ๋„๋Œ€์ฒด ์™œ ์ €์žฅ์ด ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ผ๊นŒ?

๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ Apple์˜ ITP ์ •์ฑ… ๋•Œ๋ฌธ์ด๋‹ค!

๐Ÿ“Œ ITP

Apple์˜ ITP 2.0 ์ด๋ž€ โ€˜Intelligetn Tracking Preventionโ€™ ์ด๋ผ๋Š” ๋œป์œผ๋กœ, Apple์˜ Safari ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ์ž์˜ ํ–‰๋™ ์ถ”์ ์„ ์–ต์ œํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด๋‹ค.

https://www.i-boss.co.kr/ab-74668-788

ITP ์ฃผ์š” ํŠน์ง•

  • ์„œ๋“œํŒŒํ‹ฐ(์ œ3์ž) ์ฟ ํ‚ค ์™„์ „ ์ฐจ๋‹จ
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋„๋ฉ”์ธ์˜ ์ฟ ํ‚ค ๋ฐ ๋กœ์ปฌ ์ €์žฅ์†Œ ์ฐจ๋‹จ
  • JS ๊ธฐ๋ฐ˜ ์ฟ ํ‚ค/Storage ์ˆ˜๋ช… ์ œํ•œ (์ตœ๋Œ€ 7์ผ ๋“ฑ)
  • ์ถ”์ ์šฉ์œผ๋กœ ์˜์‹ฌ๋˜๋Š” ๋„๋ฉ”์ธ์„ ํƒ์ง€ํ•˜์—ฌ ์ฟ ํ‚ค ์ €์žฅ ๊ธˆ์ง€

๋งŽ์€ ๊ด‘๊ณ ์ฃผ์™€ ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ง• ์Šต๊ด€์„ ์ถ”์ ํ•ด ๊ฐœ์ธํ™”๋œ ๊ด‘๊ณ ๋ฅผ ์ œ๊ณตํ•˜๋ ค๊ณ  ์‹œ๋„๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์ด ์ˆ˜์ง‘๋˜๊ณ , ์‚ฌ์ƒํ™œ ์นจํ•ด ์šฐ๋ ค๊ฐ€ ์ปค์ง„๋‹ค. ์ด์— ๋”ฐ๋ผ Apple์—์„œ๋Š” ๊ด‘๊ณ  ํŠธ๋ž˜์ปค์˜ ๋ถ„์„ ํˆด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์–‘ํ•œ Cookie ์ •๋ณด๋ฅผ ์ง€๋Šฅ์ ์œผ๋กœ ์–ต์ œํ•˜์—ฌ ์•ˆ์ •๋œ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์ธ ITP 2.0์„ ๋ฐœํ‘œํ•œ ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ITP 2.0์—์„œ๋Š” first party๋ฅผ ์ œ์™ธํ•œ ์ฟ ํ‚ค๋ฅผ ์ฐจ๋‹จ์‹œํ‚ค๋Š”๋ฐ, ํ˜„์žฌ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๋„๋ฉ”์ธ์˜ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด ์„œ๋“œํŒŒํ‹ฐ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ์ฟ ํ‚ค ์ €์žฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

  • ํ”„๋ก ํŠธ์—”๋“œ : chipsatbooks.vercel.app
  • ๋ฐฑ์—”๋“œ : chipsat.shop

์ด ๋‘ ๋„๋ฉ”์ธ์€ ์„œ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์œผ๋กœ ์ธ์‹๋˜๋ฏ€๋กœ, Safari๋Š” ์ด ์š”์ฒญ์„ ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ, ์ฆ‰ ์„œ๋“œํŒŒํ‹ฐ ์š”์ฒญ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

SameSite = None์œผ๋กœ ์„ค์ •ํ•˜๋”๋ผ๋„, Safari๋Š” ITP ์ •์ฑ…์— ๋”ฐ๋ผ ์ฟ ํ‚ค๋ฅผ ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ์— ๊ธฐ๋กํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ’กResult


โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ๋„๋ฉ”์ธ ํ†ตํ•ฉ ์ „๋žต

๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๋Š” ์ปค์Šคํ…€ ๋„๋ฉ”์ธ์„ ๊ตฌ๋งคํ•˜์—ฌ ๋„๋ฉ”์ธ์„ ์ผ์น˜์‹œ์ผœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€๋‹ค.

  • ํ”„๋ก ํŠธ์—”๋“œ : https://www.wowGood.com
  • ๋ฐฑ์—”๋“œ : https://api.wowGood.com
    (์œ„ ๋งํฌ๋Š” ํ•œ ๊ฐ€์ง€ ์˜ˆ์‹œ๋กœ, ์‹ค์ œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋งํฌ์ž…๋‹ˆ๋‹ค.)


๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด, ์ž๋™์œผ๋กœ /books๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋˜๋Š”๋ฐ ์š”์ฒญ ํ—ค๋”๋ฅผ ๋ณด๋ฉด ์ฟ ํ‚ค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋‹ด๊ธด ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ, ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌํŒŒ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜์˜€๋‹ค!

์ฒ˜์Œ์—๋Š” "ํฌ๋กฌ์—์„  ์ž˜ ๋˜๋Š”๋ฐ ์™œ Safari์—์„  ์•ˆ ๋˜๋Š”๊ฑฐ์ง€?"๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค. ๊ฐ™์€ ์ฝ”๋“œ์ž„์—๋„ ํŠน์ • ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์ธ์ฆ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์ด ์›์ธ์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ฝค๋‚˜ ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ฒˆ ๊ฒฝํ—˜์„ ํ†ตํ•ด ์›น ๋ธŒ๋ผ์šฐ์ €๋ณ„ ๋ณด์•ˆ ์ •์ฑ…์˜ ์ฐจ์ด, ํŠนํžˆ Apple Safari์˜ ITP ์ •์ฑ…๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ ํŠนํ™” ์ •์ฑ…์„ ์ƒˆ๋กœ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋˜ํ•œ ํฌ๋กœ์Šค๋„๋ฉ”์ธ ์ธ์ฆ๊ณผ ์ฟ ํ‚ค ์ •์ฑ…, ๊ทธ๋ฆฌ๊ณ  SameSite ์†์„ฑ์˜ ์˜๋ฏธ์™€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๊นŠ์ด ์žˆ๊ฒŒ ์ดํ•ดํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์›น ๋ณด์•ˆ ์ „๋ฐ˜์— ๋Œ€ํ•œ ์ดํ•ด๋„ ์—ญ์‹œ ํ•œ์ธต ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค.

์ฒ˜์Œ์—” ์ž๋ฃŒ๋„ ๋งŽ์ง€ ์•Š๊ณ  ๋น„์Šทํ•œ ์‚ฌ๋ก€๋„ ํ”ํ•˜์ง€ ์•Š์•„ ๊ฝค ๋ง‰๋ง‰ํ–ˆ์ง€๋งŒ, ํ•˜๋‚˜์”ฉ ์‹คํ—˜ํ•˜๊ณ  ์„ค์ •์„ ๋ฐ”๊ฟ”๋ณด๋ฉฐ ๋๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ˆ๊ธฐ๋ฅผ ๊ธฐ๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค.

๐Ÿ’ก์ž๋ฃŒ ์ถœ์ฒ˜

https://atoz-develop.tistory.com/entry/์ž‘์„ฑ์ค‘-Cookie์ฟ ํ‚ค์™€-๋„๋ฉ”์ธ์˜-๊ด€๊ณ„-์ •๋ฆฌ

https://www.codeit.kr/tutorials/94/์ฟ ํ‚ค์˜ SameSite ์˜ต์…˜์ด๋ž€%3F

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ์ง€๋งํ•˜๋Š” ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ 3ํ•™๋…„ ํ•™์ƒ์ž…๋‹ˆ๋‹ค https://github.com/Juhye0k

0๊ฐœ์˜ ๋Œ“๊ธ€