【问题标题】:How can I send POST requests in a secure manner to a Rails application?如何以安全的方式向 Rails 应用程序发送 POST 请求?
【发布时间】:2018-12-20 00:33:06
【问题描述】:

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

我有多个 ruby​​ 脚本向我的 Rails 服务器执行 Curl Post 请求。这里的担忧是让攻击者同时发送大量请求。阻止我们的服务器并花费我们很多钱。

任何建议将不胜感激。

【问题讨论】:

  • 99.9% 的应用程序也容易受到此影响,但实际上并不经常发生。但您需要研究Rack::Attack 或类似的限速解决方案。
  • 您的问题不是关于如何处理拒绝服务攻击吗?标题似乎不匹配。

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


【解决方案1】:

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

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

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

token = app.session[:_csrf_token]

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    相关资源
    最近更新 更多