管理者がログインできるようにするコードをphpで作成しました。パスワード情報はテーブルから取得されます。そのような種類のコードを書くのは良い習慣ではないことはわかっています。準備済みステートメントまたは mysqli_ を使用する必要がありますが、SQL クエリの脆弱性について知りたいだけです。自分のコードが SQL インジェクションに対してどのように脆弱であるかを知りたいだけですか? パスワードの制限を回避するにはどうすればよいですか。パスワード フィールドに password = 'anything' OR 'x'='x' を入力しようとしましたが、バイパスされません。これは私のコードです:-
if(isset($_POST["Submit"]))
{
include 'db_connect.php';
$user=$_POST['user'];
$pass=$_POST['pass'];
$checkquery="select * from adminlogin where password='$pass' ";
$queryex= mysql_query($checkquery);
$row= mysql_fetch_array($queryex);
$checkcasepass = $row['password'];
if($user=='admin' && strcmp($checkcasepass,$pass)==0)
{
setcookie("admin",$user);
setcookie ("student", "", time() - 3600);
header("location: admin option.php");
}
else
{
echo "Sorry User Name and Password is Wrong";
}
}
テスト目的で、クエリ文字列を次のように変更しました:-
$checkquery="select * from adminlogin where password='$pass' OR 1=1 ";
しかし、うまくいきませんでした。魔法の引用符が原因でしょうか? しかし、私は PHP 5.4.3 を使用しており、マジック クォートは既に減価償却されています。なぜ SQL インジェクションが機能しないのか疑問に思っています。?