我正在开发一个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]">
答案 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))