2013-01-07 19 views
0

我有一些PHP的帖子ajax页面(以便CAPTCHA不是一个好主意)。php/apache,有没有什么办法来阻止跨域的邮政

一些fsockopencurl可能会将POST value设置为具有交叉域的钢材数据。

所以php/apache,有没有什么办法阻止跨域的帖子?

+0

偷什么?字节?你根本不能窃取字节。你必须更好地解释你的问题。如果你不想要其他人请求你的网站,你需要先输入密码,然后再给你想要的密码。 – hakre

+0

@hakre,我有'yahoo boss api'的一些查询,我怀疑有些人使用'fsockopen'或'curl'钢我的数据。 – cj333

回答

2

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

如果你想保密,在允许访问前需要授权。

虽然仍然保持公开的数据,但您可以采取各种方式来屏蔽障碍,但它们都难以绕过。测试用户代理不会停止请求者指定与公共浏览器相匹配的用户代理。从您网站上的其他页面请求cookie不会阻止他们请求该页面并为其工具获取cookie。等

+0

basic auth以纯文本格式发送密码,任何使用charles web proxy或类似浏览器插件的人都可以嗅探登录名和密码,然后编写自己的脚本来发送垃圾邮件。阻止这种情况的唯一方法是使用SSL发出请求。如果您的服务器没有安装SSL,则可能需要花费$$美元,否则您将不得不生成自己的自签名认证。使用自签名证书可能会提示您的浏览器接受认证,这会让很多用户望而却步。 – mrbinky3000

+0

我没有提到“基本认证”只是认证。使用浏览器插件的Charles的人是您已授权使用该服务的人。你无法阻止他们发现密码。即使您对连接进行了加密(一般来说,无论何时需要登录都是一个好主意),那么他们要么知道密码,要么可以从发送给浏览器的源代码中获取密码。 – Quentin

+0

如果您要为此执行身份验证/授权,那么您需要使用比“已访问网站”更严格的标准,因此无法从发送给浏览器的证书中获取证书。 – Quentin

0

许多Web服务提供了一个API,但不希望任何老人访问该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证书,就需要SSL证书。你可以从像Thawte.com这样的地方购买(不便宜),或者自己签署自己的证书。但是,如果您要经历所有这些麻烦,那么您只需执行公钥/私钥加密路由即可达到80%。自签名证书通常会提示用户的浏览器。这吓跑了很多人。

+0

这是......过于复杂。对于大多数情况,密码和SSL将用于传输中的数据验证和保护。有了这个解决方案,你将如何去处理加密的JavaScript方面? – Quentin

+0

SSL很好。但基本的httpauth以纯文本形式发送密码并且可以被嗅探。只要他确保只接受SSL连接并忽略未加密的请求,基本身份验证就可以工作。 – mrbinky3000

+0

@ mrbinky3000,我的网站有ssl(https://),是一个到https://的ajax文章安全吗? – cj333

相关问题