rails如何以安全的方式向ajax提供数据?

时间:2011-09-30 09:52:05

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

为了使用一些AJAX调用,我们经常使用一些输入类型=“隐藏”。但这些价值观很容易改变。那么,它是否是一个内置的rails功能,而不是允许向AJAX发送日期,用户无法使用,或者用户无法更改?

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

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

但是以某种方式以安全的方式为ajax调用提供数据吗?或唯一的安全,是关于权利管理?

1 个答案:

答案 0 :(得分:1)

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

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

要确保hidden字段未被更改,您可以使用某种校验和,该校验和是使用固定密钥在服务器端计算的。绝不能让这个秘密暴露给你的访客!

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

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