如何在PHP中执行代码

时间:2015-07-29 07:39:07

标签: 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方法,并且他可以正确地输入用户名和密码值,他是否可以成功登录?

2 个答案:

答案 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)

如果您真的关心安全性,那么您永远不应该自己实施身份验证。有很多攻击类型,可能要复杂得多,然后就可以抵抗了 使用任何身份验证系统(或网络框架),这将为您解决许多问题!