filter関数のフィルタフラグに、コードが 32 未満の文字を除去する FILTER_FLAG_STRIP_LOW
があります。
コードが 32 未満の文字というのは、ASCII文字コードを指しており、ヌルバイト文字も対象なのかと思います。
これを使うとヌルバイト文字の除去(ヌルバイト攻撃の対処)をできるのでは?とおもい、試していますが、うまく除去されません。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>null</title> </head> <body> <form method="post" action="send.php"> <input type="text" name="name"> <input type="submit" value="送信"> </form> </body> </html>
<!doctype html> <html> <head> <meta charset="utf-8"> <title>null</title> </head> <body> <?php $name = filter_input(INPUT_POST, 'name'); echo $name; ?> </body> </html>
\0
や \00
や %00
などを入力してみましたが、そのまま表示されます。
除去されて何も表示されないと予想していました。
記述の仕方に問題があるのでしょうか?
そもそもに誤りがあり、filter関数を使うことで、ヌルバイト文字を除去することはできないのでしょうか?
ご存じの方、教えてください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/04/04 08:10