質問

XAMPP で PHP 5.2.6 を使用する:
SQLインジェクションについて読みました ここ 次のログインフォームでそれを試しました:

<html><body>
        <form method='post' action='login.php'>
            <input type='text' name='user'/>
            <input type='text' name='pass'/>
            <input type='submit'/>
        </form>
</body></html>

およびphpコード:

<?php
$user = $_POST['user'];
$pass = $_POST['pass'];
$query = "Select * from users where user='$user' AND pass='$pass'";
echo $query;
mysql_connect('localhost','root','');
mysql_select_db('test');
$res = mysql_query($query);
if($res) $row = mysql_fetch_assoc($res);
if($row) echo 'yes';
?>

私が発見したのは、$pass 変数にはすでにすべての特殊文字がエスケープされていたということでした。つまり、mysqlを使用する必要はありませんか_本物_逃げる_PHP 5.2.6 の文字列はどうなるでしょうか?

役に立ちましたか?

解決

これはあなたのPHPサーバーがのhref="http://www.php.net/magic_quotes" rel="nofollow noreferrer">マジッククオートここでは、Zendの理由は<です/で削除されますA>マジッククオートを除去する。

これは、多くの物事が動作しますが、他の人を壊す「魔法」に依存しない方が良いでしょう。明示的に入力をエスケープすることは、より信頼性があり、あなたがより良いコードを設計します。たとえば、すべての入力が同じようにエスケープする必要があります。

他のヒント

値は次の理由でエスケープされる可能性があります。 魔法の名言 サーバー構成で有効になっています。魔法の引用は、基本的にあなたが述べたとおりの理由で、非常に悪いものとみなされます。入ってくるデータを自動的にエスケープする機能がオンになっているかどうかに依存するのは安全ではありません。それは 多くの 実行時に自分で行う方が良いでしょう。

Magic の引用符、それが悪い理由、および無効にする方法の詳細については、次の SO の質問と回答をいくつかご覧ください。

いいえ、私はあなたが右ここにいるとは思いません。 PHPか否かは、魔法のように、この例では、特殊文字をエスケープし、インタプリタで実行するつもりはない。のmysqlの具体的なのクエリの引数にエスケープ。

私はそれがこのコードに脆弱性があることを非常に可能性が高いと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top