この記事の例では、PHP で $_GET と $_POST による SQL インジェクションをフィルタリングする方法を説明し、参考のために皆さんに共有します。具体的な分析は次のとおりです:
この関数は、たとえば、id=1 などの一部の機密 SQL コマンドのみをフィルターできます。
主な実装コードは次のとおりです:
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
PHP4環境でSQLインジェクションを防ぐコードを書きましたが、実際に使ってみるとPHP5でも互換性がありますので、どなたでも改変してご利用ください。
コードは次のとおりです:
/*
sqlinアンチインジェクションクラス
*/
class sqlin
{
//dowith_sql($value)
function dowith_sql($str)
{
$str = str_replace(" と ","",$str);
$str = str_replace("実行","",$str);
$str = str_replace("更新","",$str);
$ str = str_replace( "count","",$str);
$str = str_replace("chr","",$str);
$str = str_replace("mid","",$str);
$str = str_replace ("master","",$str);
$str = str_replace("truncate","",$str);
$str = str_replace("char","",$str);
$str = str_replace("宣言","",$str);
$str = str_replace("選択","",$str);
$str = str_replace("作成","",$str) ;
$str = str_replace("削除","",$str);
$str = str_replace("挿入","",$str);
$str = str_replace("'","",$str) );
$ str = str_replace(""","",$str);
$str = str_replace(" ","",$str);
$str = str_replace("または","",$str );
$ str = str_replace("=","",$str);
$str = str_replace("%20","",$str);
//echo $str;
return $str;
}
//aticle() SQLインジェクション防止関数
function sqlin()
{
foreach ($_GET as $key=>$value)
{
$_GE...残りのテキスト>>
これら 2 つを使用する前に、それらが有効かどうかを確認します。有効でない場合は、次の 2 つを使用してフィルタします。
mysql_real_escape_string();例:
if (!get_magic_quotes_gpc()) {
$lastname =addslashes($_POST['lastname']);
//または mysql_real_escape_string($_POST['lastname'])
} else {
$lastname = $ _POST ['姓'];
}