에코 할 스트림 필터를 연결하여 에코되는 모든 데이터가 스트림 필터를 통과하도록 할 수 있습니까? 내 생각은 XSS로부터 보호하기 위해 출력 이스케이프 필터를 작성하는 것이다.에코 스트림 필터를 어떻게 첨부합니까?
이 버그 보고서 http://bugs.php.net/bug.php?id=30583이 발견되었지만 2004 년 이후로 지금 가능한지 여부는 알 수 없습니다.
class strtoupper_filter extends php_user_filter
{
function filter($in, $out, &$consumed, $closing)
{
while ($bucket = stream_bucket_make_writeable($in)) {
$bucket->data = strtoupper($bucket->data);
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
stream_filter_register("strtoupper", "strtoupper_filter");
$fp = fopen("php://output", "w");
stream_filter_append($fp, "strtoupper");
echo "echo: testing 123<br>";
print("print: testing 123<br>");
fwrite($fp, "fwrite: testing 123<br>");
모든 것을 필터링한다는 점을 제외하면 좋은 아이디어입니다. PHP 코드와 HTML을 포함하는 PHP 스크립트가있는 경우 PHP가 출력 한 내용 만 필터를 통과하고 HTML 코드가 필터링되지 않도록해야합니다. – ejunker
HTML을 말하면 태그 외부의 데이터를 의미합니까? preg_match를 사용하여 필터를 필터링하는 것이 아니라). – eisberg
PHP 5.4에서 1의 청크 크기는 이제 1이고 4096과 더 이상 동일하지 않습니다. –