ホームページ > バックエンド開発 > PHPチュートリアル > SQL インジェクションに対する PHP の予防策。

SQL インジェクションに対する PHP の予防策。

WBOY
リリース: 2016-06-23 13:42:19
オリジナル
1099 人が閲覧しました

最近フレームワークを使用するときに、まだ少し不安があります。フレームワークの設計者は、トップレベルで必要なフィルタリングを行う必要があるのか​​どうか疑問に思っています。それを読んだ後、非常に有益でした。その後、フレームワークの DB ライブラリの内部メソッドを見て、さらに安心しました。 SQL インジェクションに対処するための国内外の PHP プログラマー向けのソリューションを共有します。


海外では一般的に、クエリを使用する限り、次の 2 つのことを行うべきであると推奨されています: 1. prepared states (準備された文) 2. parameterized queries (parameterized query request)

最初はこれが何を意味するのか分かりませんでしたが、例を見て理解しました。 SQL をより安全にするには、最初にクエリ変数を準備する必要があります。例:

$name = $_POST['name'];$sql = 'select * from user where name'.$name;
ログイン後にコピー

次に、最初に $name を処理するのが最善です。

$name = mysql_real_escape_string($_POST['name']);
ログイン後にコピー

次に、要求された変数を SQL 言語自体の代わりにパラメーターにします。

りー

もちろん、この書き方はまだ雑です。

したがって、一般的には、PDO または MYSQLI の prepare() excute() メソッドを使用することをお勧めします。

$sql = 'select * from user where name=\''.$name.'\'';
ログイン後にコピー

PDO::prepare() について

この利点は、クエリ リクエストに SQL ステートメントを挿入することを心配する必要がなくなったことです。これらのステートメントはリクエスト変数 (文字列または数値) として扱われるためです。 、SQL 言語自体と間違われることはなくなります。これにより、SQL インジェクションの可能性が大幅に減少します。

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