我有一些带有php帖子的ajax页面(因此CAPTCHA不是一个好主意)。
某些fsockopen
或curl
可以将POST value
设置为具有跨域的钢铁数据。
所以php / apache,有没有办法阻止跨域帖子?
答案 0 :(得分:2)
您正在发布数据。你无法阻止人们提出要求。
如果您想保密,请在允许访问之前要求授权。
你可以在人们的方式上设置各种障碍 - 同时仍然公开数据 - 但是没有一个很难绕过。测试用户代理不会停止请求者指定与公共浏览器匹配的用户代理。要求您网站上其他网页提供Cookie并不会阻止他们请求该网页并获取其工具的Cookie。等
答案 1 :(得分:0)
许多提供API的Web服务,但不希望任何老人访问API,通过CURL使用公钥/私钥。如果您不熟悉,则必须对公钥/私钥加密进行一些研究。我确信有些PHP库可以为你完成所有这些工作。
像Authorize.net这样的信用卡商家,以及处理我多年来与之合作的PII(个人身份信息)的多个客户数据库服务允许您发布到URL并检索结果。他们使用公钥/私钥加密来保护他们的服务。他们向我发了一把钥匙,我必须把这个钥匙和我的请求数据一起发布。密钥通常在标头中发送,因此需要使用CURL。
背景资讯 http://computer.howstuffworks.com/encryption3.htm
PHP示例: http://www.joeldare.com/wiki/php:php_public_private_key_cryptography
注意:此系统的好处是您可以绝对控制允许谁在您的服务器上发布到PHP脚本。如果您不需要这种级别的控制,您可以使用名为“http basic auth”的东西。将敏感脚本放在目录中,并使用.htaccess身份验证对其进行保护。这是一个让您入门的工具。 http://www.htaccesstools.com/htaccess-authentication/
当您通过ajax(jquery,我接受)发出请求时,您可以传递登录名和密码。只需确保在ajax(HTTPS)中使用SSL连接即可。否则,人们可以嗅出您的登录名和密码,因为它将以纯文本形式发送而不使用SSL。
如果您确实使用基本身份验证而不是公钥/私钥,那么您的域将需要SSL证书(如果它还没有)。您可以从像Thawte.com这样的地方购买一个(不便宜),或者自己签署自己的证书。但是,如果你要经历所有这些麻烦,你只需80%即可进入公钥/私钥加密路线。自签名证书通常会提示用户的浏览器发出警告。这吓跑了很多人。