XSS 관련하여 해결방법에 대해 문의드려요.
관련링크
http://XSS 취약점 보안사항
64회 연결
본문
안녕하세요 ?
사내 보안사항에서 XSS 미조치건으로
board.php 에 stx 파라미터의 사용자 입력값을 필터링하라고 하는데요. 취약점이라고, "><script>alert(documen.cookie)/</script> 체크가 됩니다.
그누보드 최신 버전에서 이 부분에 대해 길이기 짧긴하지만 해결한거 같은데, 계속 이 부분이 취약하다고 몇번 지적을 받았는데, 어딜 어떻게 더 수정해야하는지 몰라서 글을 올려붑니다.
혹시 경험있으신 분의 조언을 부탁드립니다.
답변 3
lib에 common.lib.php에 보면
function get_search_string($stx)
{
$stx_pattern = array();
$stx_pattern[] = '#\.*/+#';
$stx_pattern[] = '#\\\*#';
$stx_pattern[] = '#\.{2,}#';
$stx_pattern[] = '#[/\'\"%=*\#\(\)\|\+\&\!\$~\{\}\[\]`;:\?\^\,]+#';
$stx_replace = array();
$stx_replace[] = '';
$stx_replace[] = '';
$stx_replace[] = '.';
$stx_replace[] = '';
$stx = preg_replace($stx_pattern, $stx_replace, $stx);
return $stx;
}
$stx = get_search_string(trim($_REQUEST['stx']));
이런식으로 처리하시면 됩니다.
!-->PHP에 특수기호들을 변환해주는 함수를 사용하면 어떨까요?
function safe_string($text)
{
$search = array("\\", "\0", "\x1a", "\x8");
$replace= array("\\\\", "\\0", "\\Z", "\\b");
$text = str_replace($search, $replace, $text);
$text = htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
return $text;
}
해당 부분은 충분히 조작 가능하기에 서버 헤더 부분에 조치를 취하는게 적합한듯합니다.
답변을 작성하시기 전에 로그인 해주세요.