addslashes() 関数は、入力文字列内の特定の定義済み文字の前にバックスラッシュを追加することがわかっています。では、それはアンチ SQL インジェクションとどのように関係するのでしょうか? SQLインジェクションとは何ですか?
SQL インジェクション攻撃は、ハッカーが Web サイトを攻撃するために使用する最も一般的な方法です。サイトで厳密なユーザー入力検証が使用されていない場合、SQL インジェクション攻撃に対して脆弱になることがよくあります。 SQL インジェクション攻撃は通常、不正なデータやクエリ ステートメントをサイト データベースに送信することによって実行され、データベース内のレコードが公開、変更、または削除される可能性があります。
この記事は主にphpでaddslashes関数を使用してSQLアンチインジェクションの例を実装する方法を紹介します。 例パラメータ「a..z」は、エスケープするすべての大文字と小文字を区切ります。コードは次のとおりです:echo addcslashes('foo[ ]','a..z'); //输出:foo[ ]
$str="is your name o'reilly?"; //定义字符串,其中包括需要转义的字符
echo addslashes($str); //输出经过转义的字符串
定義と使用法:addslashes()関数は、文字列の前に逆文字を追加します。指定された事前定義文字 Slash.
これらの事前定義文字は次のとおりです: 一重引用符 (')、二重引用符 (")、バックスラッシュ ()、null 構文:
addslashes(string)
もちろん、この関数はより安全です。コード例は次のとおりです。
$str="<a href='test'>test</a>"; //定义包含特殊字符的字符串 $new=htmlspecialchars($str,ent_quotes); //进行转换操作 echo $new; //输出转换结果 //不过输出时要用到 $str="jane & 'tarzan'"; //定义html字符串 echo html_entity_decode($str); //输出转换后的内容 echo "<br/>"; echo html_entity_decode($str,ent_quotes); //有可选参数输出的内容
この記事は、PHP セキュリティ プログラムの設計にとって優れた参考資料です。ただし、SQL インジェクション ハッカーを防ぐために addslashes を回避する方法はありますが、それはそれほど安全ではありません。
多くの PHP プログラマは、SQL インジェクションを防ぐために依然として addlashes に依存しています。
中国語での SQL インジェクションを防ぐためのチェックを強化することをお勧めします。addslashes の問題は、ハッカーが 0xbf27 を使用して単一引用符を置き換えることができることですが、addslashes は単に 0xbf27
を有効な 0xbf5c27 に変更するだけです。マルチバイト文字
0xbf5c はまだ一重引用符とみなされているため、addslashes はそれを正常にインターセプトできません もちろん、addslashes は役に立たないわけではなく、シングルバイト文字列の処理に使用されます
[関連記事の推奨事項]: 1.phpのaddslashes()関数とstripslashes()関数の詳細な例
2.phpのstripslashes()関数とaddslashes()関数の詳細な例
以上がPHPがaddslashes関数を使用してSQLインジェクション防止を実装する例の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。