-1

重複の可能性:
PHP で SQL インジェクションを防止する最善の方法

php get var clear 良いか悪いか教えてください

function Clear($text)
    $Var = str_replace("'", "", $text);
    $Var = str_replace('"', '', $Var);
    $Var = strip_tags($Var);
    $Var = htmlentities($Var);
    return $Var;
}
$_GET['Var'] = "1='1'";
$Var = Clear($_GET['Var']);
$Query = "SELECT * FROM TABLE_NAME WHERE COL ='{$Var}'";
echo 'Result : '.($Query);

これは SQL インジェクション用です。これは私が pdo を使用して書いたサンプル コードです。mysql_real_escape_string を使用すると、機能しません。

4

2 に答える 2

5

番号。番号。いいえ

それは攻撃から「安全」ではありません。

最低限の使用mysql_real_escape_stringで(これはこのために設計されています)。最初のバージョン にmysql_escape_string実際に欠陥があったため、「本物の」バージョンが存在します。

ただし、より普遍的な (そしてより整然とした) ソリューションとして、プレースホルダーをお勧めします。

PHP で SQL インジェクションを防ぐにはどうすればよいですか? を参照してください。(私もだまされて閉じることに投票しています)。回答は、とりわけ PDO と準備されたステートメントをカバーしています。

于 2012-08-02T06:08:03.700 に答える
2

準備済みステートメントを使用する: http://php.net/manual/ru/pdo.prepared-statements.php

于 2012-08-02T06:10:47.360 に答える