バイナリセーフとは?
状態:-
閲覧数:2,568
投稿日:2011-05-03
更新日:2017-09-28
バイナリデータをきちんと処理できる
・入力値がどんなバイト列であっても正しく扱えること
・ヌルバイト(\x00,\0)を通常の文字として認識する
・NULLバイトなどのバイナリデータが含まれていても正しく処理される
ヌルバイトが特別な理由
・CおよびUNIX、WindowsのAPIでヌルバイトを文字列の終端とみなす取り決めがあるから
・入力値がどんなバイト列であっても正しく扱えること
・ヌルバイト(\x00,\0)を通常の文字として認識する
・NULLバイトなどのバイナリデータが含まれていても正しく処理される
ヌルバイトが特別な理由
・CおよびUNIX、WindowsのAPIでヌルバイトを文字列の終端とみなす取り決めがあるから
バイナリセーフ関数 / バイナリセーフでない関数
バイナリセーフ関数
NULLバイトを正しく処理できる関数
・NULLバイト(\x00,\0)を通常の文字として認識する関数
・文字列にヌルバイトが含まれていても正しく(=文字列の終端とはせず)扱ってくれる関数
バイナリセーフでない関数
非バイナリセーフな関数
・NULLバイト(\x00,\0)を文字列の終端と認識してしまう関数
・ヌルバイトを終端だと見なしてしまうので、以降のデータを正しく扱えない
PHP
・ereg_replace()
・eregi()
・eregi_replace()
・split()
・spliti()
・include()
・include_once()
・require()
・require_once()
・fopen()
・file_get_contents()
・readfile()
・basename()