0
我是整個PHP/SQLite安全性遊戲的新手;我不知道如何防範注入攻擊,基於PHP_SELF的威脅等等。有人可以通過我的55行登錄頁面指出我可能擁有的任何安全漏洞嗎?我真的很感激。PHP/SQLite安全
<?php
// Begin Redirector ******************************************************************************************
if (isset($_COOKIE["session"])) { header("location:http://pagesnap.tk/"); }
// End Redirector ******************************************************************************************
else
{
?>
<html>
<head>
<title>Sign In - PageSnap</title>
</head>
<body>
<h1>PageSnap</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input name="username" type="text" placeholder="Username "/>
<br />
<input name="password" type="password" placeholder="Password" />
<br />
<br />
<input name="signin" type="submit" value="Sign In" />
</form>
</body>
</html>
<?php
if ($_POST["signin"]) // If Form Is Submitted
{
// Variables
$username = $_POST["username"];
$password = $_POST["password"];
$password = hash("sha512", $password);
// Database Connection
$database = new PDO("sqlite:database.sqlite");
// Entry Finder
$result = $database -> query("SELECT COUNT (*) FROM accounts WHERE username = '$username' AND password = '$password'");
// Success
if ($result -> fetchColumn() > 0)
{
$id = $database -> query("SELECT id FROM accounts WHERE username = '$username' AND password = '$password'");
$id = $id -> fetchColumn();
setcookie("session", "$id", time()+3600);
header("location:http://pagesnap.tk/");
}
// Failure (Entry Not Found)
else
{
echo "You have entered your username or password incorrectly.";
}
}
}
?>
非常感謝!
順便說一句,我的網站的網址是pagesnap.tk,如果你想嘗試一下。 – 2013-03-05 20:38:38
永遠不要信任用戶提交的信息。盲目地將信息推送到您的查詢中,就像*完全*如何獲得SQL注入。 http://bobby-tables.com/ – cimmanon 2013-03-05 20:43:47
至少你正在使用pdo,但你需要綁定你的變量。 – 2013-03-05 20:44:57