对不起,如果我的问题很简单。请参阅以下代码。我知道发生了什么。
<?php
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$login = $_POST['login'];}
else {echo "Connection Error";}
if(checking the fields is correct) {
//check it in database and if there is, assign the client session to the $_SESSION['username']
$_SESSION['username'] = $username;
//Login success
}
考虑一下我们有上面的代码。如果黑客不使用POST
方法,并且他使用GET
方法,那么他应该收到echo "Connection Error";
消息。
现在我的问题是:如果黑客使用GET
方法而不是POST
方法,并且他可以正确地输入用户名和密码值,他是否可以成功登录?
答案 0 :(得分:0)
变量$_POST['username']
和$_POST['login']
仅在用户发送POST请求时可用。
我建议像这样重写你的代码:
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$login = $_POST['login'];
if (checking_the_fields_is_correct($username, $login)) {
//check it in database and if there is, assign the client session to the $_SESSION['username']
$_SESSION['username'] = $username;
//Login success
}
} else {
exit("Bad request");
}
但如果你真的考虑安全问题,我建议你看看有自己成熟的授权'模块'的框架(Symfony,Laravel)。
答案 1 :(得分:0)
如果您真的关心安全性,那么您永远不应该自己实施身份验证。有很多攻击类型,可能要复杂得多,然后就可以抵抗了 使用任何身份验证系统(或网络框架),这将为您解决许多问题!