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['keywords']; $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('sss',$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.'<br>'; } $search_action ->free_result();//释放内存 $search_action ->close();//结束这个实例化 ?>
関連する推奨事項:
php SQL インジェクションとアンチインジェクションの古典的なケース分析_PHP チュートリアル
Discuz7.2 バージョンの faq.php SQL インジェクションの脆弱性分析、discuz7.2faq.php_PHP チュートリアル
以上がPHP で SQL インジェクションを防御するシンプルかつ効率的な方法を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。