如何在PHP中阻止通过socket的POST?

时间:2013-09-22 20:24:26

标签: php sockets csrf

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

将其放入.htaccess。它将禁用所有发布请求。

答案 1 :(得分:0)

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

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