【问题标题】:How can I ensure that the request coming to my Rails server was sent from my Rails view?如何确保来自我的 Rails 视图发送到我的 Rails 服务器的请求?
【发布时间】:2012-11-19 19:29:28
【问题描述】:

我正在深入研究 Ruby on Rails 并构建一个用户必须回答问题的网络游戏。我正在浏览器中用 Javascript 处理所有答案验证逻辑,这样我的服务器就不必这样做了。当我的 javascript 代码验证答案正确时,我的 Javascript 代码将向我的 Rails 服务器发送一个请求,让它知道用户使用类似...的方式正确回答了问题。

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
}); 

由于任何人都可以使用 curl 之类的工具来作弊并发送类似的请求,我如何确保请求来自我的 Rails 视图中的 javascript?

非常感谢您的智慧!

【问题讨论】:

    标签: javascript jquery ruby-on-rails


    【解决方案1】:

    Rails 默认在表单中使用 CSRF 标签来阻止来自外部来源的请求。 Read this 了解更多关于跨站请求伪造的信息。

    【讨论】:

    • 谢谢,彼得潘!我阅读了该文档,但我仍然对它的工作原理感到有些困惑。由于我没有使用 Rails 表单,而是使用问题中显示的 $.ajax 调用,Rails 是否以某种方式识别 $.ajax 调用并将安全令牌附加到它?
    • 您可以挂钩所有 jQuery ajax 调用并将 CSRF 令牌添加到所有 ajax 请求。见stackoverflow.com/questions/7270947/rails-3-1-csrf-ignored
    • 谢谢,我试试看!
    猜你喜欢
    • 2011-06-13
    • 2014-03-18
    • 2019-05-29
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多