ホームページ >バックエンド開発 >PHPチュートリアル >PHP インジェクションの防止と開発セキュリティの詳細な分析_PHP チュートリアル

PHP インジェクションの防止と開発セキュリティの詳細な分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:59:571074ブラウズ

1. PHP インジェクションの基本原則
プログラマーのレベルや経験にもばらつきがあり、コードを記述する際にユーザー入力データの正当性を判断しないため、アプリケーションにセキュリティリスクが存在しません。ユーザーはデータベースにクエリコードを送信し、プログラムから返された結果に基づいて知りたいデータを取得することができます。これがいわゆる SQL インジェクション、つまり SQL インジェクションです。 影響を受けるシステム: 入力パラメーターのチェックとフィルターを行わないシステム

SQL インジェクション プロセス
通常、次のようなアドレスを通じていくつかの必要なパラメーターを受け取ります。
ページでは、SQL ステートメントに書き込むために 2 を使用します。
通常の状況: id=2 のテーブルから * を選択

bkJia.php?id=2
SQL ステートメントに精通している場合は、2 を必要な SQL ステートメントに置き換えることができることがわかります
例: and は存在します (管理者から ID を選択します)

2. インジェクションを防ぐいくつかの方法
実際、次のような一般的なキーワードと一致をフィルタリングする必要があることがわかりました。
選択、挿入、更新、削除、* など
例:

コードをコピー コードは次のとおりです:

function inject_check($sql_str) {
return preg_match('/select|insert|update|delete|/'|///*|/* |/./.// |/.//|union|into|load_file|outfile/i', $sql_str); // フィルタ
}

またはシステム関数間の特殊記号をフィルタします
Addslashes (必要なコンテンツ)フィルタリングされます)

3. PHP の他の場所のセキュリティ設定
register_globals = Off オフに設定します
SQL ステートメントを作成するときは、小さな引用符と一重引用符を省略しないようにしてください

コードをコピーします コードは次のとおりです。

Select * From Table Where id=2 (非標準)
Select * From ·Table · Where ·id ·='2' (標準)

データベースの命名スキルを向上させ、いくつかの重要なフィールドに次のように名前を付けることができますプログラムの特徴
いくつかの共通メソッドを追加 SQL ステートメントの直接公開を避けるためのカプセル化

$_POST $_GET $_SESSION を正しく使用してパラメータを受け入れ、フィルタリングします

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/328123.html技術記事 1. PHP インジェクションの基本原則 プログラマーのレベルや経験にもばらつきがあり、コードを書く際にユーザー入力データの正当性を判断していないプログラマーがかなりいます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。