标题位置 - 在帖子中返回网址 - 是否安全?

时间:2012-08-13 08:18:23

标签: php

我有这样的东西(短版): 的index.php:

<?PHP
echo "<form action='process_form.php?action=do_something' method='post'>";
echo "<input type='hidden' name='return_url' value='index.php?".$_SERVER['QUERY_STRING']."'>";
?>

现在在process_form.php我处理了那个表单,最后我把它放了:

<?PHP
$return_url = $_POST['return_url'];
header ("location: $return_url");
die();
?>

我的问题是 - 我做得对吗?是处理POST表单数据和重定向的正确方法吗?事情是,我的返回网址可以是任何内容,但我希望用户可以完全重定向到他们提交该表单的位置。

我是否应该特别注意一些安全问题? 感谢

3 个答案:

答案 0 :(得分:1)

我会用这个:

<强>的index.php

<form action="process_form.php" method="post">
    <input type="hidden" name="action" value="do_something" />
    <input type="submit" value="Submit" />
</form>

<强> process_form.php

<?php
header('Location: ' . $_SERVER['HTTP_REFERER']);
?>

答案 1 :(得分:0)

在代码中的任何位置使用$_POST而不进行过滤可能会导致不必要的行为;在您的情况下,您应该知道response splitting attacks

好消息是,自PHP 5.1.2以来,不再可能在单个header()调用中无意中设置多个标头。

那就是说,您仍然可以查看通常附带PHP的各种input filters - 例如FILTER_VALIDATE_URL

答案 2 :(得分:0)

我没有看到任何问题。黑客通过修改POST变量不会获得任何好处。他只是在搞乱他自己会得到的HTTP响应。由于请求是POST,因此缓存服务器不会保存响应。响应分裂不是潜在的攻击向量。

你所做的是正确的。如果不是$ _POST,而是重定向$ _SESSION变量,那么就会有多个漏洞。