[英]How to execute code in PHP
如果我的问题很简单,请原谅。请参见以下代码。 我知道发生了什么
<?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
方法,并且他可以正确输入用户名和密码值,他是否可以成功登录?
变量$_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)。
如果您真的关心安全性,则永远不要自己执行身份验证。 有许多攻击类型,可能要复杂得多,因此您可以抵抗。
使用任何身份验证系统(或Web框架),都可以避免很多问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.