4

私のウェブサイトは完全に utf-8 (mysql、http ヘッダー、PHP mb_string など) を使用するように変換されています。

いくつかの侵入テストを行っており、無効な utf をスクリプトの 1 つに (BurpSuite を使用して) POST しようとしています。

しかし、無効な utf を投稿すると、$_POST 変数を 16 進ダンプするだけで、mb_detect_encoding を使用して検証する前に、無効な utf シーケンスが既にサニタイズされていることがわかります。

これは私にとって朗報のように思えますが、どのレイヤーが POST データを変換しているかを知りたいですか?

これは Content-Type HTTP ヘッダーの副作用ですか、おそらく私の Web サーバー (lighttpd) が実行しています。それとも、$_POST を入力するときに PHP 自体がそれを行っているのでしょうか?

無効な utf が 16 進ダンプされることを期待していたので、自分でサニタイズする必要がありました。

4

1 に答える 1

1

PHP 自体は POST データをフィルター処理せず、常に「有効」なバイナリ データとして処理します (単なるデータであり、検証する必要はありません)。

したがって、Web サーバーにデータを変更しているモジュールがあるか、データをフィルタリングしている PHP 拡張機能があると思われます。

Web サーバーに Web ファイアウォールがインストールされているかどうか、PHP でロードしている拡張機能のリストがあるかどうか、および入力フィルタリングに関連する何かがあるかどうかを確認してください。

于 2011-10-27T22:17:56.867 に答える