エコーされるデータがストリームフィルタを通過するようにエコーするストリームフィルタを接続する方法はありますか?私の考えは、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と同じではなくなりました。 –