제목 | XSS FILTER : TRUE 상태에서 POST 값이 사라지네요 CI 2.2.6 / PHP 5.1.6 | ||
---|---|---|---|
글쓴이 | JayT. | 작성시각 | 2016/01/14 10:04:40 |
|
|||
안녕하세요..
3년전에 CI로 사이트 개발하고... 오랫만에 만져보네요.
현재 centos 5.1 / php 5.1.6 에서 ci 2.1.0으로 사이트를 개발하고 있습니다.
global_xss_filtering 값을 TRUE로 하면 POST 값이 전부 블랭크로 사라져버리네요..ㅠ
의심가는 부분은 development 모드에서 XSS 필터를 키면 아래와 같은 WARNING 메시지가 떴었습니다.
A PHP Error was encountered Severity: Warning Message: preg_replace_callback() [function.preg-replace-callback]: Compilation failed: unrecognized character after (?< at offset 5 Filename: core/Security.php Line Number: 432
위 WARNING메시지의 해당 코드는 아래...
$pattern = '#' .'<((?/*\s*)(?[a-z0-9]+)(?=[^a-z0-9]|$)' // tag start and name, followed by a non-tag character .'[^\s\042\047a-z0-9>/=]*' // a valid attribute character immediately after the tag would count as a separator // optional attributes .'(?(?:[\s\042\047/=]*' // non-attribute characters, excluding > (tag close) for obvious reasons .'[^\s\042\047>/=]+' // attribute characters // optional attribute-value .'(?:\s*=' // attribute-value separator .'(?:[^\s\042\047=><`]+|\s*\042[^\042]*\042|\s*\047[^\047]*\047|\s*(?U:[^\s\042\047=><`]*))' // single, double or non-quoted value .')?' // end optional attribute-value group .')*)' // end optional attributes group <-- WARNING 메시지가 가리킨 423번줄 부분 .'[^>]*)(?\>)?#isS'; // Note: It would be nice to optimize this for speed, BUT // only matching the naughty elements here results in // false positives and in turn - vulnerabilities! do { $old_str = $str; $str = preg_replace_callback($pattern, array($this, '_sanitize_naughty_html'), $str); } while ($old_str !== $str); unset($old_str);
아래처럼 수정하면 WARNING은 뜨지 않으나 POST 값이 BLANK 되어버립니다.
$str = @preg_replace_callback($pattern, array($this, '_sanitize_naughty_html'), $str);
|
|||
다음글 | table 라이브러리 초기화되는 현상 (6) | ||
이전글 | 500 에러 페이지를 커스텀 하고싶은데 방법이 있을까요... (1) | ||
한대승(불의회상)
/
2016/01/14 11:18:38 /
추천
0
|
ci 다른 버젼(2.2.1 ~ 2.2.6)으로 테스트를 해보시는게 좋을 것 같습니다.