채택완료

XSS 관련하여 해결방법에 대해 문의드려요.

안녕하세요 ?

 

사내 보안사항에서 XSS 미조치건으로

board.php 에 stx 파라미터의 사용자 입력값을 필터링하라고 하는데요. 취약점이라고, "><script>alert(documen.cookie)/</script> 체크가 됩니다.

 

그누보드 최신 버전에서 이 부분에 대해 길이기 짧긴하지만 해결한거 같은데, 계속 이 부분이 취약하다고 몇번 지적을 받았는데, 어딜 어떻게 더 수정해야하는지 몰라서 글을 올려붑니다.

 

혹시 경험있으신 분의 조언을 부탁드립니다.

|

답변 3개 / 댓글 5개

채택된 답변
+20 포인트

lib에 common.lib.php에 보면

Copy
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']));

이런식으로 처리하시면 됩니다.

답변에 대한 댓글 1개

대단히 감사합니다. 역시 고수님들의 능력을 믿었습니다.

해당 부분은 충분히 조작 가능하기에 서버 헤더 부분에 조치를 취하는게 적합한듯합니다.

답변에 대한 댓글 3개

액트온님 어떻게 서버 헤더 부분을 조치하는지 자세히 알려주실수 있으실까요 ? 제가 잘 모르는 부분이라 알려주시면 배우겠습니다.
감사합니다. 액트온님

PHP에 특수기호들을 변환해주는 함수를 사용하면 어떨까요?

Copy
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;

}

답변에 대한 댓글 1개

감사합니다. 한번 해보겠습니다. !!!

답변을 작성하려면 로그인이 필요합니다.