该任务是为SQL注入和XSS创建一个安全的登录系统。
它在PHP中,我很明显地使用PDO和准备好的语句。从我的观点来看,至少应该保护最简单的注射。我在系统中投掷的那些是无效的。
如果您认为SQL注入不安全,我很乐意接受评论以及应该采取什么措施的示例。
关于XSS,我还没有采取任何措施来保护它。从学校我相信它主要是关于输入的html或url编码。但这还够吗?从谷歌我也有一些关于sql转义的文章。
再说一遍,对XSS保护的评论或帮助可能不错,或者只是在输入到达sql查询之前转移输入?
代码:
function Log_in($username, $password) {
$db = new PDO("host;dbname", "user", "password");
$login = $db -> prepare("SELECT * FROM Users WHERE Username =:username and Password =:password");
$login->bindValue(':username', $username, PDO::PARAM_STR);
$login->bindValue(':password', $password, PDO::PARAM_STR);
$login->execute();
global $count;
$count = $login->rowCount();
global $data;
$data=$login->fetchColumn(2);
return $count;
return $data;
}
$username = trim($_POST["username"]);
$password = trim($_POST["password"]);
if (isset($_POST['submit'])) {
getSalt($username);
foreach ($rowset as $row) {
$salt = $row[0];
}
$hashpassword = sha1($password.$salt);
Log_in($username, $hashpassword);
if($count==1){
session_start();
$_SESSION['email'] = $data;
header("location:index.php");
} else {
echo "Wrong";
}
}