ホームページ  >  記事  >  バックエンド開発  >  PHPでのSQLインジェクションを防ぐ方法

PHPでのSQLインジェクションを防ぐ方法

(*-*)浩
(*-*)浩オリジナル
2019-09-19 11:06:374916ブラウズ

データベースのクエリ時に SQL インジェクションを防ぐ必要がある

PHPでのSQLインジェクションを防ぐ方法

実装方法:

PHP には独自のものが付属していますメソッド SQL ステートメントはエスケープでき、データベース クエリ ステートメントで必要な場合は特定の文字の前にバックスラッシュが追加されます。これらの文字は、一重引用符 (')、二重引用符 (")、バックスラッシュ (\)、および NUL (NULL 文字) です。 (推奨学習: 初心者からマスターまでの PHP プログラミング )

string addslashes ( string $str )//该函数返回一个字符串

<?php
$str = "Is your name O&#39;reilly?";

// 输出: Is your name O\&#39;reilly?
echo addslashes($str);
?>

ThinkPHP は自動的にセキュリティ保護を提供します。文字列型データの場合、ThinkPHP は、escape_string 処理 (real_escape_string、mysql_escape_string) を実行します。

SQL インジェクションを効果的に防止するには 質問、公式推奨事項:

より安全な方法であるクエリ条件には配列を使用してみてください。

最後の手段として文字列クエリ条件を使用する必要がある場合は、前処理メカニズムを使用してください。

アプリケーションのカスタム フィルタリングには自動検証および自動完了メカニズムを使用します。

環境が許せば、PDO の使用とパラメータ バインディングの使用を試してください。

クエリ条件の前処理

このメソッドは、クエリ ステートメントにプレースホルダーを配置し、配列の形式でパラメータを渡すことに似ています。

例:

$Model->where("id=%d and username=&#39;%s&#39; and xx=&#39;%f&#39;",array($id,$username,$xx))->select();

$Model->where("id=%d and username=&#39;%s&#39; and xx=&#39;%f&#39;",$id,$username,$xx)->select();

以上がPHPでのSQLインジェクションを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。