ホームページ >バックエンド開発 >PHPチュートリアル >PHP アンチクロスサイト分析
今日バグを修正していたときに、同僚が書いたコードにクロスサイトの脆弱性を発見したので、PHP のクロスサイトアンチクロスサイト関数 htmlentities() を追加しました。
これまでこの機能を注意深く分析したことがなかったので、ドキュメントに目を通し、侵入テストのポイントを理解しました。
Htmlentities() 適切な文字をすべて HTML エンティティに変換します
関数の説明:
string htmlentities ( string $string [, int $flags = ENT_COMPAT [, string $charset [, bool $double_encode = true ]]] )
string: 変換する文字を入力します。
flags: htmlspecialchars() と同様に、2 番目のパラメーターでは、一重引用符と二重引用符が何を行うかを定義できます。これは、デフォルト定数 ENT_COMPAT の 3 つのパラメーターの 1 つである必要があり、4 番目の ENT_IGNORE
ENT_COMPAT | と組み合わせることができます。二重引用符は変換され、一重引用符はそのままになります。 |
ENT_QUOTES | 二重引用符と一重引用符の両方を変換します。 |
ENT_NOQUOTES | 二重引用符と一重引用符は両方とも変換されません。 |
無効なコードユニットをサイレントに破棄しますPHP 5.3.0 で追加されました。これは下位互換性のために提供されています。セキュリティに影響を与える可能性があるため、使用しないでください。htmlspecialchars() と同様に、オプションの 3 番目の文字列が付属しています。現在、パラメータは文字セット変換として使用されます。 | 説明
|
| 西ヨーロッパ、ラテン-1||
| ISO-8859-15 ISO8859-15 | 西ヨーロッパ、ラテン-9 。ユーロ記号が追加され、フランス語とフィンランド語の文字が Latin-1 (ISO-8859-1) にありません。 |
UTF-8 |
| ASCII 互換のマルチバイト 8 ビット Unicode。 |
cp866 | ibm866、866 | DOS 固有のキリル文字エンコード。この文字セットはバージョン 4.3.2 でサポートされています。 |
cp1251 | Windows-1251、win-1251、1251 | Windows 固有のキリル文字エンコード。この文字セットはバージョン 4.3.2 でサポートされています。 |
cp1252 | Windows-1252、1252 | Windows 固有の西ヨーロッパ エンコーディング。 |
KOI8-R | koi8-ru、koi8r | ロシア語。この文字セットはバージョン 4.3.2 でサポートされています。 |
BIG5 | 950 | 繁体字中国語、主に中国の台湾省で使用されます。 |
GB2312 | 936 | 簡体字中国語、中国語の国家標準文字セット。 |
BIG5-HKSCS |
| 香港拡張 Big5 文字セットを使用した繁体字中国語。 |
Shift_JIS | SJIS、932 | 日本語 |
EUC-JP | EUCJP | Japanese |
double_encode: double_encode が閉じた状態では、PHP はデフォルトですべてを HTML エンティティに変換します | 戻り値 | エンコードされた文字列を返します html_entity_decode() と htmlentities() は逆関数で、1 つはデコード用、もう 1 つはエンコード用です。 | しかし、これらの文字セットがなかったらどうなるでしょうか?その場合、この機能は動作しなくなります。これは悲劇ではないので、それをフィルタリングする別の関数を自分で作成したほうがよいでしょう。
{ $arr = array('http','script','iframe','com','www');//川を渡る登場人物たち、ふふ、ご自由にそれらを使用してください。実際、http:// に渡されない限り、私のものは iframe 内のクロスサイトであるため、通常の処理を使用するのが最善です。 。 。これらの URL を入力するだけです foreach($arr as $value) | { if( strstr($url,$value)) { exit; | } else { return $url; | }
$url = htmlentities(inxss($_GET["url"]));二重フィルタリング。ふふ
これでもっと安全になるはず