SQL インジェクションは、プログラム開発において誰もがよく考慮する問題です。必要な場合は、一般的な SQL インジェクション防止コードを分析してください。
1. PHP 送信データのフィルタリングの基本原則
1) 変数をデータベースに送信するときは、フィルター処理に addlashes() を使用する必要があります。たとえば、注入の問題は 1 つの addslashes() だけで解決できます。実際、変数値に関しては、 intval() 関数も文字列のフィルタリングに適しています。
2) php.iniでmagic_quotes_gpcとmagic_quotes_runtimeを有効にします。 magic_quotes_gpc は、get、post、cookie の引用符をスラッシュに変更できます。 magic_quotes_runtime は、データベースに出入りするデータにおいて書式設定の役割を果たします。実際、このパラメータは、インジェクションが夢中になっていた昔から非常に人気がありました。
コードは次のとおりです | コードをコピー |
if ( $t_hRes = mysql_query($t_strSQL) ) <フォームメソッド=ポストアクション=""> ユーザー名: パスワード: |
3) システム関数を使用する場合は、システム関数を安心して使用できるように、escapeshellarg() およびscapeshellcmd() パラメータを使用してフィルタリングする必要があります。
4) クロスサイトの場合、strip_tags() と htmlspecialchars() の両方のパラメーターが有効であり、ユーザーが送信した html と php のタグはすべて変換されます。たとえば、山括弧「<」は「<」などの無害な文字に変換されます。
コードは次のとおりです | コードをコピー | ||||||||||||||||||||||||
$new = htmlspecialchars("テスト", ENT_QUOTES); ストリップタグ($text,); 5) 関連する関数のフィルタリングについては、先ほどの include()、unlink、fopen() などと同様に、操作を実行したい変数を指定するか、関連する文字を厳密にフィルタリングする限り、問題ないと思います。完璧になります。 2. PHP を使用した簡単なデータ フィルタリング 1) ストレージ: トリム($str)、スラッシュを追加($str) 1. 注射攻撃の種類 攻撃の動機にはさまざまな種類があるかもしれませんが、一見したところ、さらに多くの種類があるように見えます。これは、悪意のあるユーザーが複数のクエリを実行する方法を見つけた場合に当てはまります。これについては、この記事の後半で詳しく説明します。
前に説明したように、これはテーブルの一般的な構造 (単純なレコードでは不可能なもの) を明らかにするだけでなく、機密情報を含むレコードを明らかにする可能性があるため、それ自体が有益な情報になる可能性があります。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
URL パラメータから取得した PHP 配列が期待どおりに動作しない
カテゴリ ID を含む URL パラメータがあり、それを次のような配列として扱いたいと考えています: http://example.com?cat[]=3,9,13 PHP では、...
から 2024-04-06 22:09:02
0
1
1428
戻り値の変数の形式は何ですか?
私はphpの初心者です。コードを見つけました: if($x<time()){return[false,'error'];} ロジックや変数は重要ではありませんが、[false...
から 2024-04-06 21:55:20
0
1
778
ループするために MySQL の結果を ID ごとにグループ化する
mysqlにフライトデータを含むテーブルがあります。 codeigniter3Journey_idair_idFlightDurationout_or_inflightdurati...
から 2024-04-06 17:27:56
0
1
406
関連トピック
詳細>
|