【问题标题】:rails how to give data to ajax in a secure way?rails 如何以安全的方式将数据提供给 ajax?
【发布时间】:2011-09-30 09:52:04
【问题描述】:

为了使用一些 AJAX 调用,我们经常使用一些 input type="hidden"。但是这些值很容易改变。那么,它是一个内置的 Rails 功能,而不是允许将日期发送到 AJAX,用户无法使用,还是不能由用户更改?

在我当前的 Rails 应用程序中,我使用过滤器来丢弃我的控制器上的所有恶意操作。我不是在构建公共 API,所以我真的不需要更强大的检查。

但例如,我有一个 apotomo 小部件显示一些数据,使用隐藏的一些输入。但是如果你改变它,你可以访问另一个数据集。就我而言,这并不是一个真正的问题,因为所有这些用户都有权访问这些数据集。

但是以安全的方式向 ajax 调用提供数据是否有某种方式?还是唯一的安全性,是关于权限管理?

【问题讨论】:

    标签: ajax ruby-on-rails-3 hidden-field


    【解决方案1】:

    来自用户的所有输入都是不安全的,因为您无法控制它!用户甚至不需要网络浏览器,但可以使用其他一些程序(如curlwget)来发送操纵数据。

    正如您所说,使用白名单(不是黑名单,因为您永远无法确定所有坏事,但所有好事!)是一个很好的开始方式。

    为确保hidden 字段未被更改,您可以使用某种校验和,该校验和在服务器端使用固定密码计算得出。绝不能将这个秘密暴露给您的访问者!

     hash = md5(field_1 + field_2 + field_3 + my_secret)
    

    当这四个隐藏字段(field_1..3,hash)到达您的表单时,您可以重新计算哈希并将其与 params[:hash] 进行比较,以确保 field_1 到 field_3 没有被更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 2017-02-19
      相关资源
      最近更新 更多