これまでに多くの SQL インジェクション防止コードについて説明してきましたが、参考までに、サーバー スクリプトから始める必要があります。参考までに、PHP でインジェクションを防止する一般的な方法について説明します。
最も一般的なものはおそらく
最初に、magic_quotes_gpc を On に設定し、display_errors を Off に設定します。ID 型の場合は、コードに示すように intval() を使用して整数型に変換します。
$id=intval($id);
1) 変数をデータベースに送信するときは、フィルター処理に addlashes() を使用する必要があります。たとえば、注入の問題は 1 つの addslashes() だけで解決できます。実際、変数値に関しては、 intval() 関数も文字列のフィルタリングに適しています。
2) php.iniでmagic_quotes_gpcとmagic_quotes_runtimeを有効にします。 magic_quotes_gpc は、get、post、cookie の引用符をスラッシュに変更できます。 magic_quotes_runtime は、データベースに出入りするデータの書式設定の役割を果たします。実際、このパラメータは、インジェクションが夢中になっていた昔から非常に人気がありました。
3) システム関数を使用する場合は、安心してシステム関数を使用できるように、escapeshellarg()、escapeshellcmd() パラメータを使用してフィルタリングする必要があります。
4) クロスサイトの場合、strip_tags() と htmlspecialchars() の両方のパラメーターが有効であり、ユーザーが送信した html と php のタグはすべて変換されます。たとえば、山括弧「<」は「<」などの無害な文字に変換されます。
コードをコピー | |||||
ストリップタグ($text,); |
コードは次のとおりです | コードをコピー |
//security.php /*
/* フィルター関数 */ ?> 何かのCMで見かけます foreach($HTTP_POST_VARS as $key=>$value){
|
このコードはこの関数をすべてのページにロードするため、フィルタリングするとファイルをアップロードするときに問題が発生するようです。
。