ジュン 特に最近話題になってるのは、バイナリセーフな関数とかバイナリセーフじゃない関数とかを交ぜこぜで使うと困ったことになる、ってとこかなぁ。 クウ バイナリセーフ……ですか? 言葉は聞いたことあるけど……。 ジュン んっと。バイナリをちゃんとバイナリとして扱えるってのが、バイナリセーフかな? クウ ふむ……。 ジュン 制御文字とかが交ざってるときに、文字列として扱わないと困るときがあるからねー。 クウ むむむ…… 制御文字の中でも特に「%00」などで表すことができるNULL文字を、Webアプリケーションに渡される文字列の中に混入することで、意図しない動作を引き起こす可能性がある。バイナリセーフの場合、NULL文字も文字として扱われるが、非バイナリセーフの場合、NULL文字を「文字列の終了」と見なしてしまうため、以降の文字を扱えず、この挙動の差から問題が発生する。 入力と処理、それぞれの「
![その文字列はセーフ? 本当は奥深いデコード処理](https://cdn-ak-scissors.b.st-hatena.com/image/square/6e84fc6ab06f31b2e64248cbfc92fe06deb5bab5/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fimages%2Flogo%2F1200x630_500x500_ait.gif)