通过URL阻止用户操作站点数据?foo = bar

时间:2014-01-08 23:15:39

标签: php

我的注册后端php将用户重定向到前端,如下所示:

header('Location:registrationView.php?warning='.urlencode($error));

在前端我回显我的变量,它告诉用户完全填写注册表格,如下所示:

if ($_GET)
{
    echo htmlspecialchars($_GET["warning"]);
}

如果用户决定手动将现在看起来像http://localhost/registrationView.php?warning=Fill+complete+form的URL更改为以下内容,那么就会使用上面的get方法:

http://localhost/registrationView.php?blahblah 

http://localhost/registrationView.php?warning=blahblah

他当然要么出错,要么将网站上显示的文字改为“blahblah”!

有没有办法阻止对URL的这种操作,还是有更好的方法从后端返回警告消息?

1 个答案:

答案 0 :(得分:2)

我喜欢使用session代替错误。

如果要返回错误,我通常会做类似的事情。

    $_SESSION["error"] = "my error text.";

我经常尝试在他们做某事之后将他们发送到成功页面。

在成功页面的顶部,我放了这样的东西,将它们重定向回原始页面。

    if (!empty($_SESSION["error"])){
        header('Location: original_page.php');
    }

然后,在原始页面中,我放了这样的东西。

    if (!empty($_SESSION["error"])){
        echo $_SESSION["error"];
        $_SESSION["error"] = null ;
        unset($_SESSION["error"]);
    }

这样他们就会显示错误,如果他们开始尝试输入随机内容,就不会执行任何代码。

我从不使用$ _GET来处理任何可能被操纵的东西。