我想阻止非浏览器客户端访问某些页面/成功发出请求。如何阻止非浏览器客户端提交请求?
网站内容被提供给认证用户。会发生什么是我们的用户将他的凭据提交给我们的网站给第三方 - 它可以是另一个网站或移动应用程序 - 代表他执行请求。
说有用户填写并发送消息的表单。我可以保护此表单,以便处理提交的服务器可以判断用户是否直接从浏览器提交它?
我不想为了可用性的原因使用CAPTCHA。我可以用一些JavaScript来做到吗?
我想阻止非浏览器客户端访问某些页面/成功发出请求。如何阻止非浏览器客户端提交请求?
网站内容被提供给认证用户。会发生什么是我们的用户将他的凭据提交给我们的网站给第三方 - 它可以是另一个网站或移动应用程序 - 代表他执行请求。
说有用户填写并发送消息的表单。我可以保护此表单,以便处理提交的服务器可以判断用户是否直接从浏览器提交它?
我不想为了可用性的原因使用CAPTCHA。我可以用一些JavaScript来做到吗?
您可以使用javascript来提升栏,但是任何浏览器都可以使用自动化系统。在最糟糕的情况下,他们可以自动化浏览器,但几乎肯定会有一些更简单的方法来模拟操作。
在任何情况下,他们都可以记录浏览器使用代理发送的请求,并计算出JavaScript所做的任何技巧。
在什么弹簧想到条件(提高标准)(使用javascript):
另一个可用性问题是,任何禁用JavaScript的人都将无法使用该服务。这可能比验证码更能影响可用性。
这就是我害怕听到 - 但谢谢 – 2010-03-19 14:48:29
只有一种方法可以做到这一点,分析供应商字符串寻找被承认的浏览器,但如果有人伪造供应商字符串,他们没有办法避免提交。 - 你会打破形式
var isMoz = window.navigator.userAgent.match(/^Mozilla/)?true:false;
用PHP,你可以尝试的本地函数get_browser
有检测HTTP代理没有可靠的方法:
要如果导航仪是基于JavaScript的Mozilla浏览器知道任何情况下的某些浏览器 - 除非您可以强制用户使用非常有限的一组浏览器(但这可能会被再次欺骗)。
IMO,试图限制可以用来访问表单的软件,你应该确保有一个真正的人类控制该软件。不幸的是,除非所有客户都能访问生物识别扫描仪,否则没有比验证码更好的方法。
你为什么要防止这种情况? – Kimvais 2010-03-19 10:29:48
也许这是一个基于浏览器的游戏,他想防止漫游器? – 2010-03-19 10:34:22
或“发送反馈”表单来获取垃圾邮件......在这两种情况下,都有一些强制更改密码的whitleblower应用程序会更好。 – Kimvais 2010-03-19 10:40:06