如何以安全的方式将POST请求发送到Rails应用程序?

时间:2018-07-11 21:29:46

标签: ruby-on-rails ruby security ruby-on-rails-5 csrf

我正在尝试为我的POST请求添加一层安全保护。

我有多个ruby脚本,它们向我的rails服务器发送Curl Post Request。这里的问题是让攻击者同时发送大量请求。阻塞我们的服务器,使我们损失很多钱。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用真实性令牌轨道以其形式自动生成,作为CLI脚本的一种非常基本的验证码。请记住,真实性令牌的目的是避免CSRF攻击而不是DOS攻击,因此,如果您担心漫游器占用带宽,那将无济于事,但是如果您担心只有“授权”请求通过,您就可以使用令牌。显然,最好的解决方案是对路由进行完整的用户身份验证和授权,并为您的脚本设置用户并为该用户生成JWT。获得真实性令牌或JWT后,您可以将它们添加到POST中。

您可以在http://guides.rubyonrails.org/security.html上查看真实性令牌的工作方式,并将authenticity_token密钥添加到POST中。如果您的脚本在Rails环境中运行,则创建会话并获取有效令牌很容易

app.get '/<some_model>s/new'

token = app.session[:_csrf_token]

然后在您的帖子中使用该令牌

app.post '/<some_model>s', params: {authenticity_token: token}