0

我正在开发一个 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 %>

路线.rb

resources :journal do 
  resources: news
end

网址看起来像 mysite.com/journal/1/news/3。由于日记 ID 在 url 中,我如何防止用户将日记 ID 值 1 更改为 2 或 3。

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

3 回答 3

2

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

如果用户不能读/写这个日志,将他重定向到相应的页面,等等。

于 2013-01-09T17:00:36.417 回答
2

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

于 2013-01-09T17:01:07.267 回答
0

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

例如:

journal = currect_user.journals.find(params[:news][:journal_id])
journal.news.create(params[:news].except(:journal_id))
于 2013-01-09T17:19:07.190 回答