PHP逆引き大全 516の極意

セキュアプログラミングの極意 - Tips469 ヌルバイト攻撃の手法と対策を理解する

登録タグ
PHP
Icon comment count 0
Icon stock count 0

7-8その他のセキュリティTips469 ヌルバイト攻撃の手法と対策を理解する

Level2

Pointバイナリセーフな関数を代替利用する

「468」で紹介したヌルバイト攻撃が適用可能なのは、ファイル名を指定する関数のみではありません。

ヌルバイトが混在した場合、開発者が意図しない動作をする可能性がある関数としては、例えば以下のようなものがあります。

ereg()、ereg_replace()、eregi()、eregi_replace()、split()、spliti()、include()、include_once()、require()、require_once()、fopen()、file_get_contents()、readfile()、basename()

対策としては、バイナリセーフな関数を代替として利用することです。バイナリセーフな関数とは、ヌル文字をファイルの終端とみなさないなど、特殊な制御文字があっても動作を変えない関数のことです。

例としては、preg_match()、fread()、fgetcsv()、file()などです。

Hint

C言語の世界では一般的にヌルバイトが文字列の終端を表すため、上記の関数の動作は見方によっては誤動作ではありません。

出典情報

Medium

PHP逆引き大全 516の極意

  • 著者: 大家 正登, 茂木 健一, 鮫島 康浩, 谷中 志織

コメント

    コメントはありません