홈페이지 취약점 분석 이야기 파일 지도 사진 깨알






>> 목록보이기
#조치방안 #방어법 #XSS 방어 #크로스사이트스크립트 #SQL구문삽입 #입력검증 #특수문자 제거

XSS(Cross-site Script)와 SQL 인젝션 방어법

입력값에서 다음과 같은 특수문자 제거하기!!!
< > ( ) ' " ; = + | & - # ..

JSP에서 특수문자 제거하기

<%
	String user_name = request.getParameter("name");
	user_name = replace(user_name, "<", " ");
	user_name = replace(user_name, ">", " ");
	user_name = replace(user_name, "(", " ");
	user_name = replace(user_name, ")", " ");
	user_name = replace(user_name, "'", " ");
	user_name = replace(user_name, "\"", " ");
	user_name = replace(user_name, ";", " ");
	user_name = replace(user_name, "=", " ");
	user_name = replace(user_name, "+", " ");
	user_name = replace(user_name, "|", " ");
	user_name = replace(user_name, "&", " ");
	user_name = replace(user_name, "-", " ");
	user_name = replace(user_name, "#", " ");
	user_name = replace(user_name, "..", " ");
%>

PHP에서 특수문자 제거하기

<?PHP
	$user_name = $_POST['name'];
	$spc = array('<', '>', '(', ')', '\'', '"', ';', '=', '+', '|', '&', '-', '#', '..');
	$user_name = str_replace($spc, ' ', $user_name);
?>

두 소스코드는 하나의 입력변수에 대해서 JSP와 PHP에서 다수의 특수문자를 공백( )으로 치환하는 것이다. 위와 같은 개념으로 함수를 만들어서 모든 변수에 적용시키면 XSS공격, SQL구문삽입 공격 등을 대부분 차단할 수 있다. 공백문자로 치환할 특수문자 목록에 연이은 마침표(..)가 들어있으므로 경로조작 취약점도 대부분 방어할 수 있다.

특수문자 제거 시험 (편의를 위해 공백대신 '_'로 변경하여 출력)
문자열 입력:

[주의사항]

  • 개발자들이 많이 간과하는 부분이 "파일이름"이다. 파일이름도 사용자가 조작할 수 있는 입력값이므로 특수문자를 제거해야 한다.
  • 마침표 두 개('..')도 공백으로 처리하면 다수의 파일다운로드/경로조작 취약점을 방어할 수 있다. 완전하게 경로조작 취약점을 막기 위해서는 사선(/), 역사선(\) 문자도 치환하거나 제거해야 한다. 또는 다른 파일다운로드 방어법을 참조...

[처음 작성한 날: 2016.11.09]    [마지막으로 고친 날: 2016.11.14] 


< 이전 글 : 파일다운로드/경로조작 방어하기 (2016.11.09)

> 다음 글 : 길찾기(sitemap) (2016.11.09)


크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문
 __
( 컴퓨터가 핸드폰과 비슷한 수준으로  )
( 사용하기 쉬워지기를 바랐던 남자가  )
( 있었다. 그런데 전화기 사용법이  )
( 컴퓨터만큼 어려워지면서 그 소원이  )
( 자연스레 이루어졌다.   )
(  )
( - Bjarne Stroustrup, C++언어를 개발한 사람  )
 --
o                             .       .
 o                           / `.   .' " 
  o                  .---.  <    > <    >  .---.
   o                 |    \  \ - ~ ~ - /  /    |
         _____          ..-~             ~-..-~
        |     |   \~~~\.'                    `./~~~/
       ---------   \__/                        \__/
      .'  O    \     /               /       \  " 
     (_____,    `._.'               |         }  \/~~~/
      `----.          /       }     |        /    \__/
            `-.      |       /      |       /      `. ,~~|
                ~-.__|      /_ - ~ ^|      /- _      `..-'   
                     |     /        |     /     ~-.     `-. _  _  _
                     |_____|        |_____|         ~ - . _ _ _ _ _>
.. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ...... ... ... ] .. [ .../ ..../ ......./ .. ./// ../ ... .. ... .. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ./// ../ ... .. ... ...| ..../ ./ ... / ..| ....| ........ / ... / .... ...... ... ... ] .. [ .../ ..../ ......./ .....| ..../ ./ ... / ..| ....| ........ / ... / .... ...| ..../ ./ ... / ..| ....| ........ / ... / .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .