발생원인
입력값을 자동으로 redirection 하는 사이트에서 입력값 검증이 없는 경우 발생한다.
영향
피싱이나 XSS
코드예
안전하기 않은 코드의 예 - JAVA |
…… protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String query = request.getQueryString(); if (query.contains("url")) { String url = request.getParameter("url"); response.sendRedirect(url); } ……
|
url 파라미터에 대한 검증을 수행하지 않음 |
안전한 코드의 예 - JAVA |
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 다른 페이지 이동하는 URL 리스트를 만든다. String allowURL[] = { "http://url1.com", "http://url2.com", "http://url3.com" };
// 입력받는 url은 미리 정해진 URL의 order로 받는다. String nurl = request.getParameter("nurl"); try { Integer n = Integer.parseInt(nurl); if ( n >= 0 && n < 3) response.sendRedirect(allowURL[n]); } catch (NumberFormatException nfe) { // 입력값이 숫자가 아닐 경우 적절히 에러를 처리한다. } } |
이동에 대한 URL을 선택하게 한다. |
'보안 > 시큐어코딩' 카테고리의 다른 글
[시큐어코딩-8] 입력데이터 검증및 표현(8) XPath삽입 (0) | 2012.10.28 |
---|---|
[시큐어코딩-7] 입력데이터 검증및 표현(7) XQuery삽입 (0) | 2012.10.28 |
[시큐어코딩-5] 입력데이터 검증및 표현(5) 위험한 형식 파일 업로드 (0) | 2012.10.28 |
[시큐어코딩-4] 입력데이터 검증및 표현(4) 운영체제 명령어 삽입 (0) | 2012.10.28 |
[시큐어코딩-3] 입력데이터 검증및 표현(3) 크로스사이트 스크립트 (0) | 2012.10.28 |