ホームページ > バックエンド開発 > PHPチュートリアル > PHP で SQL インジェクションを防御するシンプルかつ効率的な方法を共有する

PHP で SQL インジェクションを防御するシンプルかつ効率的な方法を共有する

*文
リリース: 2023-03-18 09:36:01
オリジナル
2624 人が閲覧しました

WEB セキュリティは常に非常に深刻なテーマです。 SQL インジェクションは一般的な攻撃手法であることが多く、コードは非準拠データを処理してインジェクションを防ぐように設計されています。しかし、PHP は弱い型付け言語であるため、私たちが考慮していないリスクが常にあります。この記事では、SQL インジェクションを防ぐためのシンプルだが効果的な方法を紹介します。

60%さまざまな防御に使用する必要があるコードを覚えておく必要があります。

実際、今見てみると、SQL インジェクションを防ぐために、実際にはさまざまなパラメーターのフィルタリングは必要ありません。以下では、ドライ情報モードがオンになります。

PHP5.x は、新しい mysql 操作メソッド-----mysqli の導入を開始しました。PHP には、PHP プリプロセスと呼ばれる、対応する操作メソッドもあります。オブジェクト指向のアプローチは、パラメーター化されたバインド操作を実行するために使用されます。データベース操作にはさまざまなモード ドライバーがあるため、SQL インジェクションを防ぐのに非常に効果的です。まず、コードの例を見てみましょう。R

<!--?php 
$root = "root";
$pwd = "root";
$host = "localhost";
$database =  "database";
$conn = new mysqli($host,$root,$pwd,$database);//面向对象的方式实例化一个对象
$keywords = $_GET[&#39;keywords&#39;];
$search_sql = "select content from mykey where title = ? ";//其中的?是一个占位符
$search_action = $conn --->prepare($search_sql);//进行预处理操作
$search_action ->bind_param("s",$keywords);//绑定参数,第一个参数表示为上面预处理的的占位符的数量和每一个参数的数据类型,s为字符串,i为整形,d为双精度小数,有几个参数,就写几个s或d或i,比如说iiii,ssss,sidi这样的。然后后面就是有几个参数就写几个要绑定的变量,比如bind_param(&#39;sss&#39;,$username,$password,$code);
$search_action ->bind_result($content);//将结果绑定在相对应的变量上,比如你select了username,password,你就可以写bind_result($usernmae,$password);
$search_action ->execute();//执行sql操作
while($search_action ->fetch()){
echo $content.&#39;<br>&#39;;
}
$search_action ->free_result();//释放内存
$search_action ->close();//结束这个实例化
?>
ログイン後にコピー
E

は、開発速度を向上させるために非常に便利な例です。 、このバインディング パラメータを使用して SQL ステートメントをまだつなぎ合わせているのですか? と尋ねたい人もいるかもしれません。それが結合されたステートメントである場合、インジェクションが発生するのではありませんか? これは、その動作原理から説明する必要があります。実際、ステートメントは準備操作中にすでにデータベース内で実行されており、その後のバインド パラメーターと実行も行われます。 , データを渡すだけなのでSQL文とのつなぎ目は一切ないので、当然危険なコードは実行されません。したがって、このモードでは SQL インジェクションを効果的に防御できます。

PHP 前処理クラスには便利な操作がたくさんあります。今後の記事で、一般的に使用される PHP 前処理開発ステートメントをいくつかまとめます。

関連する推奨事項:

php SQL インジェクションとアンチインジェクションの古典的なケース分析_PHP チュートリアル

Discuz7.2 バージョンの faq.php SQL インジェクションの脆弱性分析、discuz7.2faq.php_PHP チュートリアル

php SQLインジェクション攻撃と予防策

以上がPHP で SQL インジェクションを防御するシンプルかつ効率的な方法を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート