2013-01-09 69 views
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 %> 

的routes.rb

resources :journal do 
    resources: news 
end 

的URL看起來像這樣mysite.com/journal/1/news/3。由於日誌id的URL我怎麼能防止值1改變日誌ID用戶能夠像2或3

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

回答

2

你不能。永遠不要相信任何地方的輸入。實現任何類型的服務器端驗證/角色模型/訪問限制。

2

你不能阻止用戶向您發送修改的輸入。您可以(也應該)檢查服務器上的輸入,而不是盲目地接受它。

如果用戶不能讀/寫本雜誌,他重定向到相應的頁面等

0

您應該使用current_user關聯來獲取任何記錄,以確保您的應用程序安全。

例如:

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