JWT(Json Web Token) ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

2025. 5. 25. 19:58ยท๐ŸŒฟSpring
๋ชฉ์ฐจ
  1. JWT (JSON Web Token) ์ด๋ž€
  2. JWT ๊ตฌ์กฐ
  3. + JWT ์˜ˆ์‹œ
  4. JWT ๋™์ž‘ ๋ฐฉ์‹
  5. JWT ์žฅ๋‹จ์ 

JWT (JSON Web Token) ์ด๋ž€

JWT(JSON Web Token)์ด๋ž€ ์œ ์ €๋ฅผ ์ธ์ฆํ•˜๊ณ  ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ JSON ํ† ํฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด ํ† ํฐ ๋‚ด์—๋Š” ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ ์ •๋ณด์™€ ๊ฐ™์€ ์ธ์ฆ ์ •๋ณด๊ฐ€ Base64 URL ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ† ํฐ์„ HTTP ํ—ค๋”์— ์‹ค์–ด ์‘๋‹ต์„ ๋ณด๋‚ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


JWT ๊ตฌ์กฐ

JWT๋Š” ์„ธ ํŒŒํŠธ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ฉฐ, ๊ฐ ํŒŒํŠธ๋Š” ์ ์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

ํ—ค๋”(Header), ํŽ˜์ด๋กœ๋“œ(Payload), ์„œ๋ช…(Signature)์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://research.securitum.com/jwt-json-web-token-security/

ํ—ค๋”(Header)

ํ—ค๋”์—๋Š” ํ•ด์‹œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ† ํฐ ํƒ€์ž… ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์„œ๋ช… ์ƒ์„ฑ์— ์‚ฌ์šฉํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜
    • ex) HS256, RS256
  • ํƒ€์ž…: ํ† ํฐ์˜ ํƒ€์ž…, ์—ฌ๊ธฐ์„œ๋Š” JWT๊ฐ€ ๋˜์ฃ .

ํŽ˜์ด๋กœ๋“œ(Payload)

ํŽ˜์ด๋กœ๋“œ์—๋Š” ํ† ํฐ์— ๋‹ด๊ธธ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฃผ๊ณ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ์‹ค์ œ ์ •๋ณด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ณด ํ•˜๋‚˜๋ฅผ 'ํด๋ ˆ์ž„(claim)'์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ ˆ์ž„: key(name)-value ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•œ ์Œ์˜ ์ •๋ณด 
  • ํด๋ ˆ์ž„ ์˜ˆ์‹œ
    • ํ‘œ์ค€ ํด๋ ˆ์ž„(Registered Claim): JWT ์‚ฌ์–‘์—์„œ ์ •์˜ํ•œ ํด๋ ˆ์ž„ 
      • iss(issuer: ๋ฐœํ–‰์ž)
      • exp(expiration time: ๋งŒ๋ฃŒ ์‹œ๊ฐ„)
      • sub(subject: ์ œ๋ชฉ)
      • iat(issue at: ๋ฐœํ–‰ ์‹œ๊ฐ„)
      • jti(JWT ID)
    • ๊ณต๊ฐœ ํด๋ ˆ์ž„(Public Claim): ์‚ฌ์ „์— ์ •์˜๋œ, ๊ณต๊ฐœ์šฉ ์ •๋ณด ์ „๋‹ฌ์„ ์œ„ํ•œ ํด๋ ˆ์ž„
    • ๋น„๊ณต๊ฐœ ํด๋ ˆ์ž„(Private Claim): ๋ฐœ๊ธ‰์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์˜ ํ˜‘์˜์— ๋”ฐ๋ผ ์ •์˜๋œ ํด๋ ˆ์ž„

 

์„œ๋ช…(Signature)

์„œ๋ช…์€ ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ด์–ด ๋ถ™์ธ ํ›„, ์‹œํฌ๋ฆฟ(Secret Key) ๋˜๋Š” ํ”„๋ผ์ด๋น— ํ‚ค(Private Key)๋กœ ์•”ํ˜ธํ™”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋Š” ํ—ค๋”์—์„œ ์ •์˜ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ ํ‚ค(Key)๋Š” ์„œ๋ฒ„์—์„œ๋งŒ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’์œผ๋กœ ์ด ๋น„๋ฐ€ํ‚ค๊ฐ€ ์œ ์ถœ๋˜์ง€ ์•Š๋Š” ์ด์ƒ ํƒ€์ธ์ด ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์„œ๋ช…์€ ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ† ํฐ์„ ์œ„์กฐํ•˜์ง€ ์•Š์•˜์Œ์„ ์„œ๋ฒ„๊ฐ€ ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 

HMACSHA256(
    base64UrlEncode(header) + "." + base64UrlEncode(payload),
    secret
)

+ JWT ์˜ˆ์‹œ

JWT๋Š” Base64URL๋กœ ์ธ์ฝ”๋”ฉ์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Base64URL์€ ์›น(URL) ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ

๋ˆ„๊ตฌ๋‚˜ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์–ด ์•”ํ˜ธํ™”์˜ ๊ธฐ๋Šฅ์€ ์—†์Šต๋‹ˆ๋‹ค.

 

https://jwt.io/์—์„œ JWT Decoder / Encoder ์ฒดํ—˜์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


JWT ๋™์ž‘ ๋ฐฉ์‹

  1. ์‚ฌ์šฉ์ž๋Š” ์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด ์„œ๋ฒ„๋กœ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ์ž…๋ ฅ๋ฐ›์€ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ , ์ธ์ฆ์ด ์„ฑ๊ณตํ•˜๋ฉด  JWT๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. 
    • ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ , ์‹œํฌ๋ฆฟ ํ‚ค์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ํ—ค๋”์— ์ •์˜๋œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ช…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ JWT๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ). ์ดํ›„ ์š”์ฒญ ์‹œ HTTP ํ—ค๋” Authorization์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด JWT๋ฅผ ๋‹ด์•„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
    • Authorization: Bearer <JWT>
  4. ์„œ๋ฒ„๋Š” ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ช…์ด ์œ ํšจํ•œ์ง€, ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ์ง€๋‚˜์ง€ ์•Š์•˜๋Š”์ง€
  5. ์„œ๋ฒ„๋Š” ํŽ˜์ด๋กœ๋“œ์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
  6. ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

JWT ์žฅ๋‹จ์ 

โœ… ์žฅ์ 

  • ์„ธ์…˜ ์ €์žฅ์†Œ ๋ถˆํ•„์š” (Stateless)
    • JWT ์ž์ฒด๊ฐ€ ์ธ์ฆ๋œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ, ์„ธ์…˜ ์ €์žฅ์†Œ ๊ฐ™์€ ๋ณ„๋„์˜ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š” ๋ฌด์ƒํƒœ(stateless) ๊ตฌ์กฐ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ ํ™•์žฅ์— ์œ ๋ฆฌ
    • ๋ฌด์ƒํƒœ ์•„ํ‚คํ…์ฒ˜ ๋•๋ถ„์—, ์„œ๋ฒ„ ๊ฐ„ ์„ธ์…˜ ๊ณต์œ ๊ฐ€ ํ•„์š” ์—†์–ด ํ™•์žฅ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๊ฐ€  ์ธ์ฆ ์ •๋ณด๊ฐ€ ํŽ˜์ด๋กœ๋“œ์— ํฌํ•จ๋˜์–ด ์žˆ์–ด, ์š”์ฒญ ์‹œ๋งˆ๋‹ค DB๋ฅผ ์กฐํšŒํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
  • ๋น„๋ฐ€ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ช…์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์œ„๋ณ€์กฐ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฅ ๋‹จ์ 

  • ํ† ํฐ ์ž์ฒด์— ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ํ† ํฐ ํƒˆ์ทจ ์‹œ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ† ํฐ์„ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ ํƒˆ์ทจ๋‹นํ•˜๋ฉด ๋Œ€์ฒ˜ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฏธ ๋ฐœ๊ธ‰๋œ ํ† ํฐ์„ ์ค‘๊ฐ„์— ๊ฐ•์ œ๋กœ ๋ฌดํšจํ™”ํ•˜๊ธฐ ํž˜๋“ญ๋‹ˆ๋‹ค.
  • ํŽ˜์ด๋กœ๋“œ์— ๋งŽ์€ ์ •๋ณด๋ฅผ ๋‹ด์•„ ํ† ํฐ์ด ๊ธธ์–ด์ง€๋ฉด ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ์— ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ๋”œ๋ ˆ๋งˆ
    • ๋„ˆ๋ฌด ์งง์œผ๋ฉด ์žฆ์€ ์žฌ๋ฐœ๊ธ‰์œผ๋กœ ๋ถˆํŽธํ•˜๊ณ 
    • ๋„ˆ๋ฌด ๊ธธ๋ฉด ํƒˆ์ทจ ์‹œ ์žฅ๊ธฐ๊ฐ„ ์•…์šฉ๋  ์ˆ˜ ์žˆ์–ด ์ ๋‹นํžˆ ๊ท ํ˜•์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ์ž๋ฃŒ

https://ivory-room.tistory.com/88

https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-JWTjson-web-token-%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC

https://research.securitum.com/jwt-json-web-token-security/

https://www.geeksforgeeks.org/json-web-token-jwt/

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•

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

Spring์—์„œ ์บ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ: CaffeineCache, @Cacheable, @CachePut, @CacheEvict  (2) 2025.06.12
[Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #2 ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํ† ํฐ ํƒˆ์ทจ + ๋Œ€์‘ ์ „๋žต  (0) 2025.05.23
[Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #1: CSRF๊ณต๊ฒฉ๊ณผ XSS ๊ณต๊ฒฉ + ๋Œ€์‘ ์ „๋žต  (3) 2025.05.23
[Spring Security] Role Hierarchy: ๊ถŒํ•œ ๊ณ„์ธต ๊ตฌ์กฐ ๊ฐœ๋… ์ •๋ฆฌ & ์ ์šฉ  (1) 2025.05.22
[Spring Security] ์ปค์Šคํ…€ ํ•„ํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ / UsernamePasswordAuthenticationFilter ๋ฐ”ํƒ•  (0) 2025.05.21
  1. JWT (JSON Web Token) ์ด๋ž€
  2. JWT ๊ตฌ์กฐ
  3. + JWT ์˜ˆ์‹œ
  4. JWT ๋™์ž‘ ๋ฐฉ์‹
  5. JWT ์žฅ๋‹จ์ 
'๐ŸŒฟSpring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Spring์—์„œ ์บ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ: CaffeineCache, @Cacheable, @CachePut, @CacheEvict
  • [Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #2 ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํ† ํฐ ํƒˆ์ทจ + ๋Œ€์‘ ์ „๋žต
  • [Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #1: CSRF๊ณต๊ฒฉ๊ณผ XSS ๊ณต๊ฒฉ + ๋Œ€์‘ ์ „๋žต
  • [Spring Security] Role Hierarchy: ๊ถŒํ•œ ๊ณ„์ธต ๊ตฌ์กฐ ๊ฐœ๋… ์ •๋ฆฌ & ์ ์šฉ
์†Œ์˜ ๐Ÿ€
์†Œ์˜ ๐Ÿ€
Hello World โœจ
  • ์†Œ์˜ ๐Ÿ€
    Soyoung's Dev Lab
    ์†Œ์˜ ๐Ÿ€
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ธ€์“ฐ๊ธฐ ๊ด€๋ฆฌ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (47)
      • ๐Ÿ“ข ๊ฒŒ์‹œํŒ (0)
      • ๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜ (1)
      • ๐ŸŒฟSpring (15)
      • โ˜•Java (8)
      • ๐Ÿ“Š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (3)
      • ๐Ÿ“ค ๋ฐฐํฌ (4)
        • Docker (4)
        • AWS (0)
      • โš™๏ธ CS & ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ (14)
      • ๐Ÿ–ฅ๏ธ ํ”„๋กœ์ ํŠธ (0)
      • ๐Ÿ‘ฉโ€๐Ÿ’ป ํ™œ๋™ & ํ›„๊ธฐ (0)
      • ๐Ÿต ์ด์•ผ๊ธฐ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํƒœ๊ทธ
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์œ„ํด๋ฆฌ ํŽ˜์ดํผ
    Java
    ๊ฐœ๋ฐœ
    ์ž๋ฃŒ๊ตฌ์กฐ
    GIT
    ์ฝ”๋“œ์ž‡ ์Šคํ”„๋ฆฐํŠธ
    docker
    ๋ฐฐํฌ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    Spring Security
    Spring
    ์„œ๋ฒ„
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์†Œ์˜ ๐Ÿ€
JWT(Json Web Token) ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

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

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

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

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

๋ชจ๋“  ์˜์—ญ

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

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