Rails安全隐藏的领域和firebug?

时间:2013-01-09 16:58:25

标签: ruby-on-rails ruby

我正在开发一个Web应用程序,困扰我的是用户可以使用firebug来操作代码。

<%= form_for([@journal, @news]) do |f| %>
  <div class="field">
    <%= f.label :title %>
    <%= f.text_field :title %>
  </div>

  <%= f.hidden_field :journal %>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

的routes.rb

resources :journal do 
  resources: news
end

网址看起来像是mysite.com/journal/1/news/3。由于期刊ID在网址中,我如何防止用户将期刊ID值1更改为2或3之类的内容。

<input id="news_journal_id" type="hidden" value="1" name="news[journal_id]">

3 个答案:

答案 0 :(得分:2)

您无法阻止用户向您发送已修改的输入。您可以(并且应该)检查服务器上的输入,而不是盲目地接受它。

如果用户无法读取/写入此日记,请将其重定向到相应的页面等

答案 1 :(得分:2)

你做不到。永远不要相信任何地方的输入。实现任何类型的服务器端验证/角色模型/访问限制。

答案 2 :(得分:0)

您应该使用current_user关联来获取任何记录,以使您的应用程序安全。

例如:

journal = currect_user.journals.find(params[:news][:journal_id])
journal.news.create(params[:news].except(:journal_id))