如何阻止非浏览器客户端提交请求?

Tom*_*ohl 1 javascript forms security

我想阻止非浏览器客户端访问某些页面/成功发出请求.

网站内容将提供给经过身份验证的用户.会发生什么事情是我们的用户将他的凭据提供给我们的网站给第三方 - 它可以是另一个网站或移动应用程序 - 代表他执行请求.

假设有一个用户填写并发送消息的表单.我可以保护此表单,以便处理提交的服务器可以判断用户是否直接从浏览器提交了它吗?

出于可用性原因,我不想使用CAPTCHA.我可以用一些javascript做到吗?

Dou*_*der 7

你可以使用javascript来提高标准,但是浏览器可以做任何事情,自动化系统可以做到.在最糟糕的情况下,他们可以自动化浏览器,但几乎可以肯定有一些更简单的方法来模拟操作.

在任何情况下,他们都可以记录浏览器使用代理发送的请求,并计算出javascript所做的任何技巧.

在想到什么(提高标准)(使用javascript):

  1. 更改提交的位置.
  2. 在提交时更改字段名称.
  3. 隐藏看起来应该填写的字段.
  4. 在提交时加密/混淆表单内容.
  5. 将GET更改为POST.

另一个可用性问题是,任何禁用javascript的人都将无法使用该服务.这可能比CAPTCHA更能影响可用性.