PHPでエスケープするaddlashes関数、addslashesエスケープを使用するセキュリティ原則の分析
この記事の例では、PHP でエスケープする addslashes 関数を使用するセキュリティ原則の分析について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
まずはECshopでaddlashes_deepのプロトタイプを見てみましょう
コードをコピーします コードは次のとおりです:
function addedlashes_deep($value) {
If (空($value)) {
return $value // 空の場合は直接戻ります;
} その他 {
return is_array($value) ? array_map('addslashes_deep', $value):addslashes($value);
} } //すべての配列要素が走査されるまで配列を再帰的に処理します。
}
addlashes_deep 関数自体には何も問題はありませんが、使用する際には注意が必要です
今日、たまたまインターネット上でこの機能を使用した BUG インジェクションの脆弱性について投稿している人を見かけました
この関数は、コールバック関数 addlashes を参照するときにのみデータの値をエスケープします。そのため、この処理中にユーザーが特定の処理のために配列のキーを参照すると、addslashes_deep によって $key インジェクションが発生する危険性があります。同時に、キー値をエスケープするか、使用時にキーの内容を明示的に引用しないように関数を変更できます。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
addslashes -- バックスラッシュを使用して文字列を引用します
stringaddslashes ( string str )
データベースクエリステートメントなどの特定の文字の前にバックスラッシュを追加した文字列を返します。これらの文字は、一重引用符 (')、二重引用符 (")、バックスラッシュ (\)、および NUL (NULL 文字) です。
addslashes() の使用例は、データベースにデータを入力する場合です。たとえば、挿入O'reilly という名前をデータベースに追加するにはエスケープする必要があります。ほとんどのデータベースではエスケープ文字として \ が使用されます。これにより、PHP 命令 magic_quotes_sybase が on に設定されている場合、追加の \ を挿入せずにデータがデータベースに挿入されます。 ' を挿入するときに ' がエスケープされることを意味します
デフォルトでは、PHP 命令の magic_quotes_gpc がオンになっており、主にすべての GET、POST、COOKIE データに対して addlashes() を自動的に実行します。エスケープされた文字列に対しては addlashes() を使用しないでください。これにより二重レベルのエスケープが発生するため、関数 get_magic_quotes_gpc() を使用してこの状況を検出できます。
addcslashes を使用してエスケープされた文字列をデクォートする必要があるかどうかを確認してください。これをデコードするには、stripcslashes 関数を使用できます。
http://www.bkjia.com/PHPjc/904929.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/904929.html技術記事 PHP での addslashes 関数のエスケープの使用のセキュリティ原則の分析 Addslashes のエスケープ この記事では、PHP での addslashes 関数のエスケープの使用のセキュリティ原則の分析について説明します。みんなのためにみんなでシェアしましょう...