繁体   English   中英

如何在PHP中执行代码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM