如何在PHP中防止通过套接字开机自检


How to prevent POST through socket in PHP?

有没有办法防止POST通过PHP中的套接字到URL?我知道 http://en.wikipedia.org/wiki/CSRF 的一切,但我不想在任何表单上放置带有唯一哈希的隐藏输入,我只想防止全局 POST 到我的脚本的任何 URL,从远程主机或任何其他客户端。我有一种方法可以通过检查 HTTP_EXPECT 和 REQUEST_METHOD 来防止通过 cURL 进行 POST,但是当客户端通过套接字连接调用脚本时,我没有任何特殊参数可以决定它,实际上普通 POST 或通过套接字开机自检之间没有区别。如果您尝试通过套接字进行 POST http://www.google.com,您将收到 HTTP/1.1 405 方法不允许错误,我需要的一切都在我的 PHP 脚本上相同。

谢谢。

我不确定是否得到了你的问题。您可以使用mod_rewrite禁止所有POST请求:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^POST 
RewriteRule .* /yourerrordocuments/405.html [R=405,L] 

把它放在你的.htaccess.它将禁用所有发布请求。

@hek2mgl是

所有脚本的最佳解决方案,但对于每个脚本,您可以尝试:

<?php
if(isset($_POST))
{
  die();
}
else
{
  echo 'continue';
}
?>