Giu*_*ppe 6 bots ruby-on-rails devise
在过去的几周里,我的 Rails 6.1 应用程序引发了数百个异常,如下所示:
An ActionDispatch::Http::Parameters::ParseError occurred in regdevs#create:
859: unexpected token at
'utf8=%E2%9C%93&authenticity_token=fnrg63qtelQvkQx9NQx8SaZIp7mR500toEiWdaJe91
%2FOzsEvRbGD4Ow6NNADCtjw7H3EkDvFZVGP4gQkGZceEw%3D%3D&user%5Bemail%5D=jrmills91
%40hotmail.com&user%5Bfirst_name%5D=wJAhzNnPWbqMdfH&user%5Blast_name%5D=tKdp
IVXJlneZbiuA&user%5Bnickname%5D=lBdbyYgiaHt&user%5Bpassword%5D=0SgLpVuf5Wqs
%21&user%5Bpassword_confirmation%5D=0SgLpVuf5Wqs%21&user%5Bterms_of_service
%5D=1&commit=Complete+registration&g-recaptcha-response=dzghTWcBpmI'
Run Code Online (Sandbox Code Playgroud)
当“某人”尝试使用虚假凭据注册新帐户(通过 Devise)时,就会出现此错误。这显然看起来像是某种攻击。
我有两个问题:
859 unexpected token错误的更多信息?我手动部分解码了响应,主要是为了看看它是什么样子。
utf8=%E2%9C%93
authenticity_token=fnrg63qtelQvkQx9NQx8SaZIp7mR500toEiWdaJe91/OzsEvRbGD4Ow6NNADCtjw7H3EkDvFZVGP4gQkGZceEw==
user[email]=jrmills91@hotmail.com
user[first_name]=wJAhzNnPWbqMdfH
user[last_name]=tKdpIVXJlneZbiuA
user[nickname]=lBdbyYgiaHt
user[password]=0SgLpVuf5Wqs!
user[password_confirmation]=0SgLpVuf5Wqs!
user[terms_of_service]=1
commit=Complete+registration
g-recaptcha-response=dzghTWcBpmI
Run Code Online (Sandbox Code Playgroud)
第一行是checkmarkutf8=的 unicode 。也许这是验证码的一部分?
用户名等显然看起来是假的。我敢打赌 jrmills 会收到很多奇怪的电子邮件。:-)
ParseError 在parameters.rb中定义,您可以在parse_formatted_parameters中看到创建它的调用。唯一调用它的地方是request.rb。
从代码中的注释(以及我所期望的)来看,如果authenticity_token不匹配,则应该引发ActionController::InvalidAuthenticityToken 。因此,解析错误(我猜测)较低,但我无法找出为什么 JSON 或 Ruby 代码会抱怨。我想我会以不同的方式编写这段代码:捕获错误并将原始错误消息包含在新错误中 - 但是......这就是生活。
我会尝试追踪发送这些信息的 IP 地址,并在可能的情况下阻止该 IP 地址,或者至少查看它是否是相同的地址或者它们是否形成某种模式。
根据你所保护的内容会改变我的关注程度。似乎可以编写对名字和姓氏的验证来拒绝这种特定的名称样式。即名字中间的大写字母?您还可以标记任何发送到“虚假”地方(如 hotmail、yahoo、gmail 等)的电子邮件,并要求它们在获得批准之前经过审核。
使用此响应来构建测试用例来重现问题似乎也是合理的。然后将调试代码添加到 Rails 代码中,直到更好地理解异常的确切原因。
| 归档时间: |
|
| 查看次数: |
1230 次 |
| 最近记录: |