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 |