PHP安全性:向同一URL发送帖子=错误?

PHP安全性:向同一URL发送帖子=错误?,php,post,redirect,Php,Post,Redirect,我昨天回答了一个关于将POST数据发送到同一页面的问题,如下所示: if (isset($_POST['Submit'])) { // prevent resending data header("Location: " . $_SERVER['PHP_SELF']); } 有人回答: 出于web安全的目的,一篇文章不能通过简单的URL发送,这一点非常重要 现在我想知道这有什么问题?我希望避免使用带有确认消息的单独页面,因为这会破坏用户体验,从设计角度来看,这是不可能的 这对我

我昨天回答了一个关于将POST数据发送到同一页面的问题,如下所示:

if (isset($_POST['Submit'])) {
    // prevent resending data
    header("Location: " . $_SERVER['PHP_SELF']);
}
有人回答:

出于web安全的目的,一篇文章不能通过简单的URL发送,这一点非常重要

现在我想知道这有什么问题?我希望避免使用带有确认消息的单独页面,因为这会破坏用户体验,从设计角度来看,这是不可能的

这对我们来说是极其重要的 发布一篇文章的web安全目的 无法通过简单URL发送

我想说这句话的人可能误解了你或网络安全


对不同的请求方法使用相同的URL没有什么错(
GET
POST
PUT
DELETE
HEAD
等)。事实上,这是一个非常好的主意。

似乎回答者没有仔细考虑他的回答。我想他可能认为使用$_SERVER[“PHP_SELF”]会出现一些安全问题,但我看不出在这种情况下会出现什么问题

如前所述,让同一个URL处理不同的请求没有错

尽管如此,我仍然将确认消息与表单分开。我看不出有什么理由不这样做。验证和错误消息仍然可以出现在表单视图上,但只要让很多条件决定是否应该显示确认消息,表单或错误消息就好像(依我看)您收到了很多混乱的代码

出于web安全的目的,一篇文章不能通过简单的URL发送,这一点非常重要

我认为这句话的意思是,同一URL上的GET请求不可能导致与POST请求相同的结果。因此,检查
$\u REQUEST['submit']
而不是隐式检查
$\u POST['submit']
$\u SERVER['REQUEST\u METHOD']
可能是一种违规行为


也许作者的意思是,表单使用了某种一次性身份验证令牌,因此只允许经过身份验证的请求。

我不确定该人说不通过“简单”发送邮件很重要时的意思这里是链接:一个人有26K的声誉。所以声誉并不意味着什么。。。(截至撰写本文时为25K);)当然可以,但我最好再问一次好吗?