안녕하세요? 허니입니다. XSS/CSRF 취약점에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.
어플리케이션이 적절하게 검증하거나 제한하지 않고 사용자가 제공한 데이터를 브라우저가 전송한 페이지에 포함시킬 때 발생합니다. 특정한 동작의 전체과정이 예측 가능한 웹 어플리케이션에서 발생한다. 브라우저는 세션 쿠키와 같은 자격 증명 정보들을 자동으로 전송하기 때문에 공격자는 정상적인 요청과 구별할 수 없는 변조된 요청을 포함한 악성 웹 페이지를 만들 수 있습니다.
일반적인 대응방법
적절한 출력 인코딩을 이용해 사용자 입력은 항상 브라우저에서 실행될 수 있는 활성 콘텐츠가 아닌 텍스트로 취급하도록 합니다. 신뢰할 수 없는 데이터가 포함될 수 있는 HTML(body, attribute, 자바스크립트, CSS, URL) 기반 데이터 전체를 어플리케이션 내에서 제한 처리를 해야 합니다. 정규화 및 디코딩으로 입력에 특수 문자가 필요한 경우 입력을 허용하기 전에 가능한 인코딩 된 모든 입력을 디코딩 해 길이, 문자, 포맷, 데이터 관련 업무 역할을 검증하도록 해야 합니다. XSS/CSRF에 사용되는 script 문장에 존재한 특수 문자를 메타캐릭터로 변환 시킵니다.
- 메타캐릭터 변환
< --------- < |
- Contents 구문 사용
contents = Server.HTMLEncode(Request("contents")) |
- Replace 구문 사용
content = ConvertTohtml(content) |
- XST 공격 대응 방법
[Apache] |
[IIS] |
[Tomcat]
<auth-constraint> |
개발 언어별 대응방법
- 보안코딩(ASP)
If use_html Then // HTML tag를 사용하게 할 경우 부분 허용
// 허용할 HTML tag만 변경 Else // HTML tag를 사용하지 못하게 할 경우 Response.write "게시물 내용-" & memo & "<BR>" |
- 보안코딩(PHP)
$use_tag = “img,font,p,br”; // 허용할 HTML tag If($use_html == 1) // HTML tag를 사용하게 할 경우 부분 허용 $tag = explode(“,”, $use_tag); else // HTML tag를 사용하지 못하게 할 경우 // $memo = htmlspecialchars($memo); $memo = str_replace(“<”, “<”, $memo); echo “게시물 내용-“.$memo.”<BR>\n”; |
- 보안코딩(JSP)
If(use_html) // HTML tag를 사용하게 할 경우 부분 허용 // 허용할 HTML tag만 변경 else // HTML tag를 사용하지 못하게 할 경우 out.print(“게시물 내용-“ + memo + “<BR>”); |
'Past Material' 카테고리의 다른 글
불안전한 직접 객체 참조 취약점 그리고 대응방법은? (1) | 2017.07.19 |
---|---|
Hidden Field 조작 취약점 그리고 대응방법은? (0) | 2017.07.19 |
'욕'이 가지는 매우 긍정적인 역할 3가지 (0) | 2017.07.17 |
네덜란드 암스테르담 여행 코스(Updated 2017.07.16) (0) | 2017.07.16 |
스티브 잡스가 우리에게 들려주는 인생의 지혜 4가지 (0) | 2017.07.16 |