본문 바로가기

.Net

HTML에서 특수 기호 인코딩의 필요성

C# (ASP.NET)
Secure Coding
2009. 08. 19.
안혁
http://hyok.kr




HTML 문서에서 특정 의미로 해석되는 ", <, >등의 문자들을 글 내용, 글 제목 등으로 그대로 출력 시 예측하지 못한 돌발 상황에 빠지게 됩니다.
 
예를 들어,

<input value="테스트 내용" />


이렇게 HTML 문서가 만들어질 것이라고 예상하고 코드를 작성하였는데, value 값에 ["] 문자가 들어가서

<input value="누가 " 이런 글자를 입력해삼?" />


이런 HTML이 되어버려 화면에 '누가'만 나와버리는 상황이 그에 해당되겠습니다.
 
이 때, 개발자가 저런 특수문자를 입력 못하게 할 수도 있겠지만...
잘 생각해보십시오. 지금도 그 특수문자라는 것을 당신은 보고 이 글을 이해하고 있지 않습니까?
보여줄 방법이 있겠군요.
막아버리면 이모티콘조차 사용할 수 없는 황량한 프로그랭이 될겁니다. ( '');;;;
 
 
이상한 문자 입력하는 것. 다 받아 주십시오.
그럼 저장할 때 뭔가 좀 해볼까요?
그런 것, 하지 마세요. 나중에 DB 검색할 때 방해됩니다.
그냥 저장합니다.
 
그럼, 출력할 때 무언가 하는 것이겠군요.
그렇습니다.
비하인드 코드에서 문자열을 대입할 때 다음 함수를 사용하여 문자열을 인코딩합니다.

string encodedStr = HttpUtility.HtmlEncode(orignalStr);

혹시 이런 질문을 하는 사람이 있을지 모르겠습니다.
디코딩은 언제하나요?
안해도 됩니다. 브라우저가 해줄겁니다.
 

추신)
['] 문자는 인코딩 되지 않습니다. '문자로 문자열을 묶어 다음과 같은 상황이 발생하지 않도록 주의하세요.

<input value='누가 ' 이런 글자를 입력해삼?' />


값을 넣을 때, "문자로 묶는 습관을 가지기시 바랍니다.

 

---
추가
2023.02.08. Secure Coding

수정
2023.02.08. 검색 -> DB 검색

'.Net' 카테고리의 다른 글

CryptographicException: Event code 3005  (0) 2009.10.30
단일 프로세스 실행  (0) 2008.09.04