处理在没有 POST 的情况下访问 PHP 进程页面的用户


Handling users that visit a PHP process page without POST

这个问题涉及安全问题/用户端问题。

假设我有一个通过 ajax 调用的脚本,它将向数据库添加一些内容。

该脚本检查请求方法。如果它来自"POST",则脚本将执行此功能。

我不希望用户访问我的页面并收到错误或空白页面。

处理这个问题的"理想"方法是什么?

我目前的计划如下:如果它不是 POST 方法,请以与 404 处理程序相同的方式将它们重定向到错误页面,然后提供一些指向其他地方的链接。

返回 400 错误请求是一种非常标准的方法,用于指示用户在没有所需正确数据的情况下到达那里。

if(!isset($_POST)){
  header("HTTP/1.0 400 Bad Request");
}

最重要的是,如果您想确保只有您的 UI 发布到该页面,您应该花一些时间调查进行一些跨站点请求伪造保护 (CSRF)。

试试这个,我在通过 ajax 调用的所有页面中使用它:

if ($_POST['ajax'] == "ajax") { // You need to set this is your post ajax variables sent to this php file.
    // all your code here
} else {
    // Not needed for a blank page, or whatever you want for another page ie
    header ("location: 404.php");
}