2017-08-21 61 views
0

我知道如何实现基于令牌的认证。但我担心的是用户的行为,如注册,登录或验证,对攻击机器人。我可以想象一个僵尸通过假电话号码发出请求,我的短信或邮件服务器将响应所有这些请求!或者数以千计的注册用户在数据库中的用户表中,他们是假的,未经过验证。我知道一些防火墙策略来阻止网络层中的这些类型的攻击和流量。但是可以通过验证码或其他方式来确保“未经验证”的HTTP操作?保护slim 3,RESTful API

如果是,如何将验证码图像从API服务器发送到客户端?在RAW中?如果发送验证码是可能的,那么如何才能找到哪个验证码是哪个客户端?会话可以帮助吗?

感谢您的关注。

回答

2

您可以实施一种CSRF(跨站请求伪造)陷印形式以避免这种情况。我使用CSRF和蜜罐字段的组合。下面是基本概要:

  1. 服务器经由包含被设置在运行和存储在服务器作为一个会话变量上的值的隐式输入标签填充的字段。
  2. 表单还包含使用CSS隐藏的文本字段(type =“text”或textarea)。
  3. 当我们发布表单时,隐藏值(CSRF)令牌必须与保存的会话版本匹配,并且蜜罐字段必须为空。

如果测试失败,我回应一个401或404

注册机器人通常会填补蜜罐领域,一些有足够的智慧来规避CSRF - 我登录失败,这些测试和比较捕获所有的尝试几个机器人尝试。

+0

想象一下,我在另一台服务器上有一个Web界面用于用户注册。通过快速浏览HTML和JS的源代码,攻击者可以准备好进行有效的攻击。 –

+1

情况总是如此。目标是尽可能减少虚假条目。在我的情况下,CSRF字段名称以及每次迭代中的值更改。蜜罐场不会改变。许多注册机器人不会多次检查表单,他们只是重复发送POST。其他人则检查表格中的字段并填写。 您也可以在此之上实现Captcha和其他启发式。如果您愿意,我会建议您使用已建立的服务,而不是自己滚动,如果您允许的话(例如Google Recaptcha),因为它们非常成熟。 – RichGoldMD