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

URLは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 に答える