Greasemonkey: ๊ธฐ๋Šฅ ์š”์ฒญ: ์ฟ ํ‚ค API

์— ๋งŒ๋“  2013๋…„ 09์›” 07์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: greasemonkey/greasemonkey

์ฟ ํ‚ค API๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋™๊ธฐ๋Š” "PREF" ์ฟ ํ‚ค๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ถ”์ ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด google.com์—์„œ "NID" ์ฟ ํ‚ค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. document.cookie ์˜ ๋ฌธ์ œ๋Š” "NID" ์ฟ ํ‚ค๊ฐ€ ".google.com"์— ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— "PREF" ์ฟ ํ‚ค๋งŒ ํ‘œ์‹œํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Firefox๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๋„๋ฉ”์ธ๋ณ„๋กœ๋งŒ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ œํ•œ์ด ์žˆ๋Š” ์ผ๋ถ€ API๋Š” ์ด ๊ฒฝ์šฐ์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” document.cookie ๋กœ๋„ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ฟ ํ‚ค ์กฐ์ž‘์„ ํ•˜๊ณ  ์‹ถ์€ ๋ช‡ ๊ฐ€์ง€ ์ƒํ™ฉ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ž˜ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•  ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค ...

๋ชจ๋“  8 ๋Œ“๊ธ€

NID๋Š” httponly=true์ด๋ฏ€๋กœ document.cookie์—์„œ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ž์‹ ์˜ ๋”๋ฏธ ๊ฐ’์œผ๋กœ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋„๋ฉ”์ธ์—์„œ๋Š” ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ google.com ๋„๋ฉ”์ธ์—์„œ๋Š” ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฟ ํ‚ค๋Š” ์ข…์ข… ์‚ฌ์šฉ์ž๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ๊ณ ๋ ค๋  โ€‹โ€‹์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฟ ํ‚ค๋ฅผ ๋ฌด์‹œํ•˜๋”๋ผ๋„ ํ˜„์žฌ ํŽ˜์ด์ง€์— ์ฟ ํ‚ค๋ฅผ ๋‚˜์—ดํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. http ์ฟ ํ‚ค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ์•ก์„ธ์Šค๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด GM_cookie() API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด๋ก ์ƒ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ํ•œ๋™์•ˆ Greasemonkey์˜

(IMO ์‚ฌ์ดํŠธ๋Š” ์‹ค์ˆ˜๋กœ HttpOnly๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์˜๋„์ ์œผ๋กœ ๊ตฌํ˜„๋œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ๋ก€๋ฅผ ๋งŒ๋“ค๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜์œ„ ์ˆ˜์ค€ API์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ๋งŒ Firefox๊ฐ€ ๋˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฐ ์˜ค๋ž˜๋œ ๋ฌธ์ œ์— ๋Œ“๊ธ€์„ ๋‹ฌ์•„์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ž์‹ ์˜ ๋”๋ฏธ ๊ฐ’์œผ๋กœ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋ดค๋Š”๋ฐ ์•ˆ๋˜๋Š”๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HttpOnly ํ”Œ๋ž˜๊ทธ๋กœ ์ผ๋ถ€ ์ฟ ํ‚ค๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋™์•ˆ JS์—์„œ ์•ก์„ธ์Šคํ•˜๊ฑฐ๋‚˜ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ•๋ ฅํ•œ ์ผ€์ด์Šค๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฐ•๋ ฅํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ํŠน์ • ์‚ฌ์ดํŠธ์—์„œ ์˜๋ฏธ ์—†๋Š” ๋ฆฌ๋””๋ ‰์…˜์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ HttpOnly ํ”Œ๋ž˜๊ทธ๋กœ ์„œ๋ฒ„ ์ธก์—์„œ ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์•ฝํ•œ ์˜ˆ์‹œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฟ ํ‚ค์˜ ์ „์ฒด ํ˜ธ์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ํŽ˜์ด์ง€์—์„œ ์Šคํฌ๋ฆฝํŒ…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ฟ ํ‚ค๋กœ ์ธํ•ด ์ผ๋ถ€ ์ด์ƒํ•œ ๋””์ž์ธ ์„ ํƒ์œผ๋กœ ์ธํ•ด ์ „์ฒด ์›น ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. ์ฟ ํ‚ค๋Š” ์–ด๋””์—์„œ๋“  ๋กœ๊ทธ์•„์›ƒํ•  ์ˆ˜ ์—†๋Š” ์›น์‚ฌ์ดํŠธ์˜ ํŠน์ • ๋ถ€๋ถ„์— ๋กœ๊ทธ์ธํ•จ์œผ๋กœ์จ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด ์ฟ ํ‚ค๊ฐ€ httponly ํ”Œ๋ž˜๊ทธ๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ํ‘œ์ค€ document.cookie ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. httponly๋ฅผ ํ†ตํ•ด ๋ณดํ˜ธ๋˜๋Š” ์ฟ ํ‚ค๋ฅผ ์„ค์ •/์žฌ์ •์˜/์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” GM_cookie ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” document.cookie ๋กœ๋„ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ฟ ํ‚ค ์กฐ์ž‘์„ ํ•˜๊ณ  ์‹ถ์€ ๋ช‡ ๊ฐ€์ง€ ์ƒํ™ฉ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ž˜ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•  ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค ...

๋‚˜๋Š” ์—ฌ๊ธฐ๋ฅผ ๋ณผ ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค(ํ•˜๋‚˜์˜ ์˜ˆ๋งŒ):
https://dxr.mozilla.org/mozilla-central/source/devtools/shared/gcli/commands/cookie.js
( nsICookieManager2 )

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰