質問: 体系的に学ぶwebアプリケーションの作り方第2版の「4-2」入力処理とセキュリティの部分を読んでいたのですが、分からない部分があり質問させて頂きました。 ヌルバイト攻撃に対する対策についてなのですが、下記のように記述されていました。 「ヌルバイト攻撃に対する根本的な対策は、バイナリセーフの関数のみを用いてアプリケーションを開発することですが、現実にはそれは困難です。なぜなら、ファイル名のように仕様上ヌルバイトを許容しないパラメータがあるからです。この為、アプリケーションの入り口でバイナリセーフの関数を用いて入力値のヌルバイトをチェックし、ヌルバイトがあればエラーにする」ここの部分なのですが、具体的にどのようなケースのことなのかが、分かりません。「仕様上ヌルバイトを許容しないパラメータ」があった方が、処理する側ではヌルバイトを気にする必要がない為、バイナリセーフでない関数を使用しても問題がないように思えます。 ここの部分について、少し混乱してしまっているため、どなたか詳しい方がいましたら、教えて頂けましたら幸いです。
回答: > > 「仕様上ヌルバイトを許容しないパラメータ」があった方が、処理する側ではヌルバイトを気にする必要がない為、バイナリセーフでない関数を使用しても問題がないように思えます。 > > > 意味が正反対です。「仕様上ヌルバイトを許容しない」というのは、「ヌルバイトが送られた場合に**正常動作しない**」という意味です。