0

我有一些带有 php post 的 ajax 页面(因此 CAPTCHA 不是一个好主意)。

一些fsockopencurl可以设置POST value为跨域的钢铁数据。

那么php/apache,有没有什么办法可以阻止跨域发帖呢?

4

2 回答 2

2

您正在发布数据。你不能阻止人们要求它。

如果您想对其保密,请在允许访问之前要求授权。

您可以在人们的道路上设置各种障碍——同时仍然保持数据公开——但没有一个是难以绕过的。测试用户代理不会阻止请求者指定与普通浏览器匹配的用户代理。从您网站上的另一个页面请求 cookie 并不会阻止他们请求该页面并为他们的工具获取 cookie。等等。

于 2013-01-07T17:23:44.800 回答
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% 到了只使用公钥/私钥加密路线的地步。自签名证书通常会向用户的浏览器提示警告。这吓跑了很多人。

于 2013-01-07T17:25:07.860 回答