μš”μ²­λ“€μ–΄μ˜€λ©΄ urlsκ°€ view둜 보냄
viewsλŠ” Templates에 μžˆλŠ” .html νŒŒμΌμ„ λ Œλ”λ§

url에 이름 λΆ™νž 수 있음. κ²½λ‘œν—·κ°ˆλ¦¬μ§€ μ•Šκ²Œ name="new" μ΄λŸ°μ‹

form νƒœκ·Έ ꡬ쑰

<form action="μ„œλ²„ 처리 URL" method="μš”μ²­ 방식">
    <!-- 폼 μš”μ†Œλ“€ -->
</form>

action: 폼 데이터가 제좜될 URL을 μ§€μ •ν•©λ‹ˆλ‹€. (μ„œλ²„μ˜ μ—”λ“œν¬μΈνŠΈ)
method: 폼 데이터λ₯Ό 전솑할 방법을 μ§€μ •ν•©λ‹ˆλ‹€. (GET λ˜λŠ” POST)

action뒀에 폼 데이터가 제좜될 URL을 지정

form νƒœκ·Έμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 것은 input의 name 속성

name 속성은 각

<input>

ν•„λ“œμ— λΆ™μ΄λŠ” μ΄λ¦„ν‘œμ™€ κ°™μ•„μ„œ, μ„œλ²„κ°€ μ–΄λ–€ 데이터가 무엇인지 μ‹λ³„ν•˜κ³  μ²˜λ¦¬ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.

λ°›λŠ” λ°μ΄ν„°μ˜ 속성을 name에 μ €μž₯

name이 μ—†μœΌλ©΄?

폼 데이터와 ν•¨κ»˜ μ „μ†‘λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, μ„œλ²„λŠ” 이 ν•„λ“œμ˜ 값을 받을 수 μ—†μ–΄μš”.

κ°œλ°œμžλŠ” name 속성을 ν•„λ“œμ˜ λͺ©μ μ΄λ‚˜ 의미λ₯Ό 잘 λ‚˜νƒ€λ‚΄λŠ” μ΄λ¦„μœΌλ‘œ μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

inputνƒœκ·Έμ— name이 μ—†μœΌλ©΄ 아무리 적어도 데이터 전솑 μ•ˆλ¨.

name 속성이 μ—†μœΌλ©΄: ν•΄λ‹Ή μž…λ ₯ ν•„λ“œμ˜ λ°μ΄ν„°λŠ” 폼이 제좜될 λ•Œ μ„œλ²„λ‘œ μ „μ†‘λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, μ„œλ²„λŠ” κ·Έ 데이터λ₯Ό 받을 수 μ—†μŠ΅λ‹ˆλ‹€.
자유둜운 넀이밍: name 속성 값은 κ°œλ°œμžκ°€ μ •μ˜ν•  수 있으며, 각 ν•„λ“œμ˜ 데이터가 의미 μžˆλŠ” μ΄λ¦„μœΌλ‘œ 식별될 수 μžˆλ„λ‘ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

+ id

폼 μš”μ†Œμ™€μ˜ μƒν˜Έμž‘μš©

id 속성은 폼의 라벨과 μž…λ ₯ ν•„λ“œλ₯Ό μ—°κ²°ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€. idκ°€ μ—†μœΌλ©΄ 라벨을 ν΄λ¦­ν–ˆμ„ λ•Œ μž…λ ₯ ν•„λ“œκ°€ μžλ™μœΌλ‘œ ν¬μ»€μŠ€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

label for="user_email"

id="user_email" (inputμ•ˆμ—)

μΌμΉ˜ν•΄μ•Ό 함

<label for="username">μ‚¬μš©μž 이름:</label>
<input type="text" id="username">μ½”λ“œλ₯Ό μž…λ ₯ν•˜μ„Έμš”

html
μ½”λ“œ 볡사
μ‚¬μš©μž 이름:

μœ„μ˜ μ˜ˆμ œμ—μ„œ for="username"λŠ” 라벨을 클릭할 λ•Œ ν•΄λ‹Ή μž…λ ₯ ν•„λ“œμ— 포컀슀λ₯Ό 맞μΆ₯λ‹ˆλ‹€. idκ°€ μ—†μœΌλ©΄ 이 κΈ°λŠ₯이 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

id μ†μ„±μ˜ μ‚¬μš©μ— λŒ€ν•΄μ„œλŠ” 두 가지 μ€‘μš”ν•œ κ·œμΉ™μ΄ μžˆμŠ΅λ‹ˆλ‹€:

각 idλŠ” λ¬Έμ„œ λ‚΄μ—μ„œ μœ μΌν•΄μ•Ό ν•œλ‹€:

ν•œ HTML λ¬Έμ„œ λ‚΄μ—μ„œ 같은 id 값을 가진 μš”μ†ŒλŠ” 단 ν•˜λ‚˜λ§Œ μ‘΄μž¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. 즉, id 값이 μ€‘λ³΅λ˜λ©΄ μ•ˆ λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•΄μ•Ό λΈŒλΌμš°μ €μ™€ μ„œλ²„κ°€ μš”μ†Œλ₯Ό μ •ν™•ν•˜κ²Œ μ‹λ³„ν•˜κ³  μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
id μ†μ„±μ˜ 값은 μœ μΌν•΄μ•Ό ν•˜μ§€λ§Œ, λ‹€λ₯Έ id 값은 μ—¬λŸ¬ 개 μžˆμ„ 수 μžˆλ‹€:

λ¬Έμ„œ λ‚΄μ—μ„œ μ—¬λŸ¬ 개의 μš”μ†Œκ°€ μžˆμ„ 수 μžˆμ§€λ§Œ, 각 μš”μ†Œμ— λΆ™μ΄λŠ” id 값은 μ„œλ‘œ λ‹€λ₯΄κ²Œ ν•΄μ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, id="header"λ₯Ό 가진 μš”μ†Œκ°€ 두 개 이상 있으면 μ•ˆ λ©λ‹ˆλ‹€.

"λ§ˆν¬μ—…"μ΄λΌλŠ” λ‹¨μ–΄λŠ” "무언가λ₯Ό ν‘œμ‹œν•˜κ±°λ‚˜ κ°•μ‘°ν•˜λŠ” ν–‰μœ„"λ₯Ό μ˜λ―Έν•΄μš”. μ›λž˜ 이 λ‹¨μ–΄λŠ” μΆœνŒμ΄λ‚˜ 인쇄 λΆ„μ•Όμ—μ„œ μ‚¬μš©λ˜λ˜ μš©μ–΄μΈλ°, 원고에 μˆ˜μ • μ‚¬ν•­μ΄λ‚˜ 주석을 ν‘œμ‹œν•  λ•Œ μ‚¬μš©λ˜μ—ˆμ–΄μš”. 즉, μ€‘μš”ν•œ 뢀뢄을 "마크(ν‘œμ‹œ)"ν•΄μ„œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ‰½κ²Œ 이해할 수 μžˆλ„λ‘ λ•λŠ” κ±°μ£ .

과의 차이점:

λŠ” ν•œ μ€„μ˜ ν…μŠ€νŠΈλ₯Ό μž…λ ₯λ°›μŠ΅λ‹ˆλ‹€.
λŠ” 기본적으둜 μ—¬λŸ¬ μ€„μ˜ ν…μŠ€νŠΈλ₯Ό μž…λ ₯λ°›μœΌλ©°, rows와 cols 속성을 톡해 크기λ₯Ό μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.


<a> νƒœκ·Έμ˜ κΈ°λ³Έ ꡬ쑰
html
μ½”λ“œ 볡사
<a href="URL">링크 ν…μŠ€νŠΈ</a>
href 속성: 링크가 연결될 λŒ€μƒ URL을 μ§€μ •ν•©λ‹ˆλ‹€.
링크 ν…μŠ€νŠΈ: μ‚¬μš©μžκ°€ 클릭할 수 μžˆλŠ” 링크의 ν…μŠ€νŠΈμž…λ‹ˆλ‹€.

일반적인 name 속성 κ°’ μ˜ˆμ‹œ

이름 μž…λ ₯ ν•„λ“œ

html
μ½”λ“œ 볡사


name="first_name": μ‚¬μš©μžμ˜ 이름을 μž…λ ₯λ°›λŠ” ν•„λ“œ
name="last_name": μ‚¬μš©μžμ˜ 성을 μž…λ ₯λ°›λŠ” ν•„λ“œ
이메일 μž…λ ₯ ν•„λ“œ

html
μ½”λ“œ 볡사

name="email": μ‚¬μš©μžμ˜ 이메일 μ£Όμ†Œλ₯Ό μž…λ ₯λ°›λŠ” ν•„λ“œ
λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ ν•„λ“œ

html
μ½”λ“œ 볡사

name="password": μ‚¬μš©μžμ˜ λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯λ°›λŠ” ν•„λ“œ
μ „ν™”λ²ˆν˜Έ μž…λ ₯ ν•„λ“œ

html
μ½”λ“œ 볡사

name="phone": μ‚¬μš©μžμ˜ μ „ν™”λ²ˆν˜Έλ₯Ό μž…λ ₯λ°›λŠ” ν•„λ“œ
μ²΄ν¬λ°•μŠ€

html
μ½”λ“œ 볡사

λ‰΄μŠ€λ ˆν„° ꡬ독
name="subscribe": ꡬ독 μ—¬λΆ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ²΄ν¬λ°•μŠ€
λΌλ””μ˜€ λ²„νŠΌ

html
μ½”λ“œ 볡사
남성
μ—¬μ„±
name="gender": μ‚¬μš©μžμ˜ 성별을 μ„ νƒν•˜λŠ” λΌλ””μ˜€ λ²„νŠΌ κ·Έλ£Ή
λ“œλ‘­λ‹€μš΄ 리슀트

html
μ½”λ“œ 볡사
<option value="usa">λ―Έκ΅­</option> <option value="korea">ν•œκ΅­</option> name="country": μ‚¬μš©μžκ°€ μ„ νƒν•œ κ΅­κ°€λ₯Ό μ „μ†‘ν•˜λŠ” λ“œλ‘­λ‹€μš΄ 리슀트 λ‚ μ§œ μž…λ ₯ ν•„λ“œ

html
μ½”λ“œ 볡사

name="birthdate": μ‚¬μš©μžμ˜ 생일을 μž…λ ₯λ°›λŠ” ν•„λ“œ

λ§ˆν¬μ—…μ˜ 의미
Mark(ν‘œμ‹œν•˜λ‹€) + Up(κ°•μ‘°ν•˜λ‹€): μ–΄λ–€ λ‚΄μš©μ„ ν‘œμ‹œν•΄μ„œ κ°•μ‘°ν•˜κ±°λ‚˜ κ΅¬λ³„ν•˜λŠ” 것을 μ˜λ―Έν•΄μš”.

λ§ˆν¬μ—… μ–Έμ–΄μ—μ„œμ˜ "λ§ˆν¬μ—…": λ¬Έμ„œμ˜ ν…μŠ€νŠΈμ— νƒœκ·Έλ₯Ό μ‚¬μš©ν•΄ ꡬ쑰와 의미λ₯Ό ν‘œμ‹œν•˜λŠ” 것을 λœ»ν•΄μš”. 이λ₯Ό 톡해 μ»΄ν“¨ν„°λ‚˜ μ›Ή λΈŒλΌμš°μ €κ°€ λ¬Έμ„œλ₯Ό ν•΄μ„ν•˜κ³ , 화면에 μ˜¬λ°”λ₯΄κ²Œ ν‘œμ‹œν•  수 있게 λ„μ™€μ€˜μš”.
μ˜ˆμ‹œλ‘œ μ΄ν•΄ν•˜κΈ°
μΆœνŒμ—μ„œ "λ§ˆν¬μ—…": 원고에 "이 뢀뢄은 제λͺ©μœΌλ‘œ", "이 λ¬Έμž₯은 ꡡ게" λ“±μ˜ ν‘œμ‹œλ₯Ό ν•˜μ—¬, μ΅œμ’… μΈμ‡„λ¬Όμ—μ„œ μ–΄λ–»κ²Œ ν‘œμ‹œλ μ§€ μ§€μ‹œν•˜λŠ” μž‘μ—…μ΄μ—μš”.

HTMLμ—μ„œ "λ§ˆν¬μ—…": ν…μŠ€νŠΈμ— <h1>, <p>, <b> 같은 νƒœκ·Έλ₯Ό μ‚¬μš©ν•΄ 
"이것은 제λͺ©μž…λ‹ˆλ‹€", "이것은 λ¬Έλ‹¨μž…λ‹ˆλ‹€", "이것은 ꡡ은 ν…μŠ€νŠΈμž…λ‹ˆλ‹€"라고 ν‘œμ‹œν•˜λŠ” 것과 κ°™μ•„μš”.

μš”μ•½
"λ§ˆν¬μ—…"은 λ‚΄μš©μ„ ν‘œμ‹œν•˜κ³  κ΅¬μ‘°ν™”ν•˜λŠ” 것을 λœ»ν•΄μš”.
λ§ˆν¬μ—… μ–Έμ–΄μ—μ„œλŠ” λ¬Έμ„œλ‚˜ ν…μŠ€νŠΈμ— νƒœκ·Έλ₯Ό μ‚¬μš©ν•΄ νŠΉμ • 의미λ₯Ό λΆ€μ—¬ν•˜κ³ ,
κ·Έ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” 것을 μ˜λ―Έν•΄μš”. 
HTML이 λŒ€ν‘œμ μΈ λ§ˆν¬μ—… μ–Έμ–΄λ‘œ,
μ›Ή νŽ˜μ΄μ§€μ—μ„œ ν…μŠ€νŠΈμ™€ 이미지λ₯Ό ν‘œμ‹œν•˜λŠ” λ°©μ‹μ΄λ‚˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ˜μ£ .

"λ§ˆν¬μ—… μ–Έμ–΄"λΌλŠ” 말은 ν…μŠ€νŠΈμ— νƒœκ·Έ(tag)λ₯Ό μΆ”κ°€ν•΄μ„œ κ·Έ ν…μŠ€νŠΈμ˜ ꡬ쑰와 의미λ₯Ό μ •μ˜ν•˜λŠ” μ–Έμ–΄λ₯Ό μ˜λ―Έν•΄μš”. μ‰½κ²Œ λ§ν•΄μ„œ, λ§ˆν¬μ—… μ–Έμ–΄λŠ” λ‚΄μš©μ„ μ–΄λ–»κ²Œ ν‘œμ‹œν• μ§€λ₯Ό μ§€μ •ν•˜λŠ” κ·œμΉ™λ“€μ΄ λͺ¨μΈ 언어라고 ν•  수 μžˆμ–΄μš”.

λ‚˜μ˜ 말:
<> 이거λ₯Ό νƒœκ·ΈλΌκ³  ν•΄? κ΄„ν˜Έ μ•„λ‹ˆμ•Ό?

ChatGPT의 말:

쒋은 μ§ˆλ¬Έμ΄μ—μš”! <와 > 이 두 κΈ°ν˜ΈλŠ” λͺ¨μ–‘λ§Œ 보면 κΊΎμ‡  κ΄„ν˜Έ(λ˜λŠ” κ°κ΄„ν˜Έ)라고 λΆˆλŸ¬μš”. ν•˜μ§€λ§Œ HTMLμ—μ„œ 이 κΈ°ν˜Έλ“€μ€ νƒœκ·Έλ₯Ό κ°μ‹ΈλŠ” 역할을 ν•΄μš”. κ·Έλž˜μ„œ μš°λ¦¬λŠ” 이 기호둜 감싸진 λ‚΄μš©μ„ νƒœκ·ΈλΌκ³  λΆ€λ₯΄λŠ” κ±°μ˜ˆμš”.


예λ₯Ό λ“€μ–΄ λ³Όκ²Œμš”:
<p>: μ—¬κΈ°μ„œ <p>λŠ” νƒœκ·Έμ—μš”. 
<와 > 사이에 pλΌλŠ” λ¬Έμžκ°€ λ“€μ–΄κ°€ 있죠. 
이 νƒœκ·ΈλŠ” HTMLμ—μ„œ "이 ν…μŠ€νŠΈλŠ” 문단(paragraph)μž…λ‹ˆλ‹€"라고 ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λΌμš”.

HTML λ¬Έμ„œμ˜ κΈ°λ³Έ ꡬ쑰

λ¨Όμ €, HTML λ¬Έμ„œμ˜ κ°€μž₯ 기본적인 ꡬ쑰λ₯Ό μ‚΄νŽ΄λ³Όκ²Œμš”:

html
μ½”λ“œ 볡사
<!DOCTYPE html>
<html>
<head>
    <title>μ›Ή νŽ˜μ΄μ§€ 제λͺ©</title>
</head>
<body>
    <h1>μ•ˆλ…•ν•˜μ„Έμš”!</h1>
    <p>이것은 첫 번째 λ¬Έλ‹¨μž…λ‹ˆλ‹€.</p>
</body>
</html>
각 λΆ€λΆ„ μ„€λͺ…
<!DOCTYPE html>:

이 선언은 λ¬Έμ„œκ°€ HTML5 ν‘œμ€€μ„ λ”°λ₯΄κ³  μžˆλ‹€λŠ” 것을 μ›Ή λΈŒλΌμš°μ €μ— μ•Œλ €μ£ΌλŠ” 역할을 ν•΄μš”. HTML λ¬Έμ„œμ˜ κ°€μž₯ 첫 쀄에 μœ„μΉ˜ν•΄μš”.
<html>:

이 νƒœκ·ΈλŠ” HTML λ¬Έμ„œμ˜ μ‹œμž‘κ³Ό 끝을 λ‚˜νƒ€λ‚΄μš”. λͺ¨λ“  HTML μ½”λ“œλŠ” <html> νƒœκ·Έ μ•ˆμ— λ“€μ–΄κ°€μš”.
<head>:

이 λΆ€λΆ„μ—λŠ” μ›Ή νŽ˜μ΄μ§€μ— λŒ€ν•œ 메타데이터(정보)λ₯Ό ν¬ν•¨ν•΄μš”. μ—¬κΈ°μ—λŠ” νŽ˜μ΄μ§€ 제λͺ©, CSS μŠ€νƒ€μΌμ‹œνŠΈ, μžλ°”μŠ€ν¬λ¦½νŠΈ 파일 등을 넣을 수 μžˆμ–΄μš”.
<title>:

이 νƒœκ·ΈλŠ” μ›Ή λΈŒλΌμš°μ €μ˜ νƒ­μ΄λ‚˜ μ°½ 제λͺ©μœΌλ‘œ ν‘œμ‹œλ˜λŠ” λ‚΄μš©μ„ μ •μ˜ν•΄μš”.
<body>:

이 νƒœκ·Έ μ•ˆμ— μ‹€μ œλ‘œ μ›Ή νŽ˜μ΄μ§€μ— ν‘œμ‹œλ  λ‚΄μš©μ΄ λ“€μ–΄κ°€μš”. μ—¬κΈ°μ—λŠ” ν…μŠ€νŠΈ, 이미지, 링크, λΉ„λ””μ˜€ λ“± λ‹€μ–‘ν•œ μš”μ†Œλ“€μ΄ 포함될 수 μžˆμ–΄μš”.
자주 μ‚¬μš©ν•˜λŠ” HTML νƒœκ·Έλ“€
<h1> ~ <h6>:

제λͺ©μ„ ν‘œμ‹œν•˜λŠ” νƒœκ·Έμ˜ˆμš”. <h1>이 κ°€μž₯ 큰 제λͺ©μ΄κ³ , <h6>이 κ°€μž₯ μž‘μ€ 제λͺ©μ΄μ—μš”.
μ˜ˆμ‹œ:
html
μ½”λ“œ 볡사
<h1>큰 제λͺ©</h1>
<h2>쀑간 제λͺ©</h2>
<h3>μž‘μ€ 제λͺ©</h3>
<p>:

문단을 λ‚˜νƒ€λ‚΄λŠ” νƒœκ·Έμ˜ˆμš”. <p>둜 감싼 λ‚΄μš©μ€ μ›Ή νŽ˜μ΄μ§€μ—μ„œ ν•˜λ‚˜μ˜ λ¬Έλ‹¨μœΌλ‘œ ν‘œμ‹œλΌμš”.
μ˜ˆμ‹œ:
html
μ½”λ“œ 볡사
<p>이것은 λ¬Έλ‹¨μž…λ‹ˆλ‹€.</p>
<a>:

링크λ₯Ό λ§Œλ“œλŠ” νƒœκ·Έμ˜ˆμš”. href 속성을 μ‚¬μš©ν•΄ 링크할 μ£Όμ†Œλ₯Ό 지정할 수 μžˆμ–΄μš”.
μ˜ˆμ‹œ:
html
μ½”λ“œ 볡사
<a href="https://www.google.com">κ΅¬κΈ€λ‘œ 이동</a>
<img>:

이미지λ₯Ό μ‚½μž…ν•˜λŠ” νƒœκ·Έμ˜ˆμš”. src μ†μ„±μœΌλ‘œ 이미지 파일의 μœ„μΉ˜λ₯Ό μ§€μ •ν•΄μš”.
μ˜ˆμ‹œ:
html
μ½”λ“œ 볡사
<img src="image.jpg" alt="이미지 μ„€λͺ…">
<ul>, <ol>, <li>:

λͺ©λ‘μ„ λ§Œλ“œλŠ” νƒœκ·Έλ“€μ΄μ—μš”. <ul>은 μˆœμ„œκ°€ μ—†λŠ” λͺ©λ‘(뢈릿포인트), <ol>은 μˆœμ„œκ°€ μžˆλŠ” λͺ©λ‘(숫자), <li>λŠ” λͺ©λ‘μ˜ ν•­λͺ©μ„ λ‚˜νƒ€λ‚΄μš”.
μ˜ˆμ‹œ:
html
μ½”λ“œ 볡사
<ul>
    <li>첫 번째 μ•„μ΄ν…œ</li>
    <li>두 번째 μ•„μ΄ν…œ</li>
</ul>

<ol>
    <li>첫 번째 μ•„μ΄ν…œ</li>
    <li>두 번째 μ•„μ΄ν…œ</li>
</ol>
**<div>**와 <span>:

<div>λŠ” 블둝 레벨 μš”μ†Œλ‘œ, 주둜 μ„Ήμ…˜μ„ λ‚˜λˆŒ λ•Œ μ‚¬μš©λΌμš”. <span>은 인라인 μš”μ†Œλ‘œ, ν…μŠ€νŠΈμ˜ 일뢀λ₯Ό λ”°λ‘œ μŠ€νƒ€μΌλ§ν•  λ•Œ μ‚¬μš©λΌμš”.
μ˜ˆμ‹œ:
html
μ½”λ“œ 볡사
<div>
    <h2>μ„Ήμ…˜ 제λͺ©</h2>
    <p>μ„Ήμ…˜ λ‚΄μš©</p>
</div>
<p>이것은 <span style="color: red;">빨간색</span> ν…μŠ€νŠΈμž…λ‹ˆλ‹€.</p>
μš”μ•½
HTML λ¬Έμ„œλŠ” νƒœκ·Έλ“€λ‘œ κ΅¬μ„±λ˜μ–΄ 있고, 각 νƒœκ·ΈλŠ” <νƒœκ·Έμ΄λ¦„> ν˜•νƒœλ‘œ μ‹œμž‘ν•΄μš”.
HTML의 κΈ°λ³Έ κ΅¬μ‘°λŠ” <html>, <head>, <body>둜 λ‚˜λ‰˜κ³ , λ‚΄μš©μ€ <body> μ•ˆμ— λ“€μ–΄κ°€μš”.
자주 μ‚¬μš©ν•˜λŠ” νƒœκ·Έλ“€μ„ ν™œμš©ν•΄ ν…μŠ€νŠΈ, 이미지, 링크 등을 μ›Ή νŽ˜μ΄μ§€μ— ν‘œμ‹œν•  수 μžˆμ–΄μš”.

form νƒœκ·Έμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 것
input의 name 속성

λͺ¨λ“  html νŒŒμΌμ— 토큰이 μžˆμ–΄?
ChatGPT의 말:

μ•„λ‹ˆμš”, λͺ¨λ“  HTML νŒŒμΌμ— CSRF 토큰이 μžˆλŠ” 것은 μ•„λ‹ˆμ—μš”. CSRF 토큰은 νŠΉμ • μƒν™©μ—μ„œλ§Œ ν•„μš”ν•©λ‹ˆλ‹€. 주둜 폼 μ œμΆœμ΄λ‚˜ μ‚¬μš©μžμ˜ μš”μ²­μ΄ μ„œλ²„μ— μ€‘μš”ν•œ μž‘μ—…μ„ μš”μ²­ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

폼 제좜:

μ‚¬μš©μžκ°€ μ„œλ²„λ‘œ 데이터λ₯Ό μ œμΆœν•˜λŠ” νΌμ—λŠ” CSRF 토큰이 ν¬ν•¨λ©λ‹ˆλ‹€. 이 토큰은 μ‚¬μš©μžμ˜ μš”μ²­μ΄ μ‹ λ’°ν•  수 μžˆλŠ” κ²ƒμž„μ„ 보μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄, μ‚¬μš©μž 둜그인, λŒ“κΈ€ μž‘μ„±, κ²Œμ‹œλ¬Ό 생성 같은 νΌμ—λŠ” CSRF 토큰이 ν•„μš”ν•©λ‹ˆλ‹€.

crud μ—μ„œ r만 μ œμ™Έ

λ―Όκ°ν•œ μš”μ²­:

μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ€‘μš”ν•œ μž‘μ—…μ΄λ‚˜ μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” μš”μ²­(예: λΉ„λ°€λ²ˆν˜Έ λ³€κ²½, 계정 μ„€μ •)μ—λŠ” CSRF 토큰을 ν¬ν•¨μ‹œν‚΅λ‹ˆλ‹€.

그럼 같은 토큰을 μ£Όκ³  λ°›λŠ”κ±°μ•Ό?
ChatGPT의 말:
ChatGPT
λ„€, λ§žμ•„μš”! 같은 토큰을 μ£Όκ³ λ°›λŠ” 게 λ§žμŠ΅λ‹ˆλ‹€. 더 ꡬ체적으둜 μ„€λͺ…ν•΄λ³Όκ²Œμš”.

ν† ν°μ˜ 흐름
μ„œλ²„κ°€ 토큰을 생성:

μ‚¬μš©μžκ°€ 폼을 μš”μ²­ν•  λ•Œ, μ„œλ²„λŠ” CSRF 토큰을 μƒμ„±ν•©λ‹ˆλ‹€. 이 토큰은 맀우 λžœλ€ν•˜κ³  κ³ μœ ν•œ λ¬Έμžμ—΄μž…λ‹ˆλ‹€.
μ„œλ²„κ°€ HTML 폼에 토큰을 포함:

μ„œλ²„λŠ” μƒμ„±λœ 토큰을 폼 μ•ˆμ— μˆ¨κ²¨μ§„ μž…λ ₯ ν•„λ“œλ‘œ ν¬ν•¨μ‹œμΌœμ„œ, μ‚¬μš©μžμ—κ²Œ λ³΄λƒ…λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ HTML 폼을 λ°›κ²Œ 되면, 폼 μ•ˆμ— 처럼 토큰이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
μ‚¬μš©μžκ°€ 폼을 제좜:

μ‚¬μš©μžκ°€ 폼을 μž‘μ„±ν•˜κ³  μ œμΆœν•˜λ©΄, 이 토큰도 ν•¨κ»˜ μ„œλ²„λ‘œ μ „μ†‘λ©λ‹ˆλ‹€.
μ„œλ²„λŠ” μ‚¬μš©μžκ°€ μ œμΆœν•œ 폼의 데이터λ₯Ό λ°›μœΌλ©΄μ„œ, κ·Έ μ•ˆμ— ν¬ν•¨λœ 토큰도 ν™•μΈν•©λ‹ˆλ‹€.
μ„œλ²„κ°€ 토큰을 검증:

μ„œλ²„λŠ” μ²˜μŒμ— 보낸 토큰과, μ‚¬μš©μžκ°€ μ œμΆœν•œ 토큰이 μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
토큰이 μΌμΉ˜ν•˜λ©΄, 이 μš”μ²­μ΄ μ‹€μ œλ‘œ ν•΄λ‹Ή μ‚¬μš©μžκ°€ ν•œ 것이 λ§žλ‹€κ³  νŒλ‹¨ν•˜κ³  μš”μ²­μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
λ§Œμ•½ μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄, μš”μ²­μ΄ μ˜μ‹¬μŠ€λŸ¬μš΄ κ²ƒμœΌλ‘œ κ°„μ£Όν•˜κ³  μ²˜λ¦¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μš”μ•½
μ„œλ²„κ°€ HTML 폼을 생성할 λ•Œ 토큰을 ν¬ν•¨μ‹œμΌœ 보내고, μ‚¬μš©μžκ°€ 폼을 μ œμΆœν•  λ•Œ 이 같은 토큰을 λ‹€μ‹œ μ„œλ²„λ‘œ λ³΄λƒ…λ‹ˆλ‹€.
μ„œλ²„λŠ” μ²˜μŒμ— μƒμ„±ν•œ 토큰과 제좜된 토큰이 같은지 ν™•μΈν•˜μ—¬, μš”μ²­μ˜ μ•ˆμ „μ„±μ„ νŒλ‹¨ν•©λ‹ˆλ‹€.
이 과정을 톡해 CSRF 곡격을 λ°©μ§€ν•˜κ³ , μ‚¬μš©μž μš”μ²­μ΄ μ‹ λ’°ν•  수 μžˆλŠ” κ²ƒμž„μ„ 보μž₯ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

profile
μ°Έ 쉽죠? #κ°œλ°œκ³„μ˜ λ°₯아저씨λ₯Ό κΏˆκΏ‰λ‹ˆλ‹€β‹†βΊβ‚Šβ‹† β˜Ύβ‹†βΊβ‚Šβ‹†

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보

Powered by GraphCDN, the GraphQL CDN