問題タブ [mass-assignment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - attr_accessible を使用しても、保護された属性を一括割り当てできません
私は JSON API を持つ Rails 3.2.2 アプリケーションに取り組んでおり、データを挿入するために CLI クライアントを使用しています。Author モデル以外は正常に動作します。新しい投稿を作成しようとすると (投稿の belongs_to :author と Author has_many :posts)、次のエラーが表示されます。
このトピックについて多くの調査を行いましたが、有効な解決策が見つかりませんでした:-(
私は attr_accessible を使用して MassAssignent エラーを回避しています。これは他のすべてのモデルでは機能しますが、「作成者」名属性では機能しません。
オーサーモデルは次のとおりです。
実際、私は whitelist_attributes を無効にして問題を解決しましたが、これは便利な方法ではないと思います (そしておそらく良い考えではありません)。
私の質問は: attr_accessible がここで機能しないのはなぜですか? また、ホワイトリストを無効にせずに問題を解決するにはどうすればよいですか?
ありがとうございました、
レヴァン
編集 :
新しい投稿を作成するメソッド:
current_author は、指定された API キーを使用して作成者を見つけます。
ruby-on-rails - 動的ロールで一括割り当ての脆弱性を回避するにはどうすればよいですか?
ユーザー、アカウント、およびロール モデルがあります。役割は、アカウントとユーザーの間の関係タイプを保存します。
attr_accessible
一括割り当ての脆弱性を防ぐために空白のままRole
にしました (そうしないと、攻撃者がロール タイプ (所有者、管理者など)、アカウントまたはユーザー ID を変更する可能性があります)。
しかし、管理者がサブスクライバーをモデレーターに変更したい場合はどうすればよいでしょうか? これにより、一括割り当てセキュリティ例外が発生します。
これを解決するにはどうすればよいですか?1 つの方法は、各役割 (所有者、管理者、モデレーター、サブスクライバー) を表す個別のモデルを作成し、STI タイプのパターンを使用することです。これにより、次のことができます。
面倒!Onwership、Moderatorship、Subscribership などを作成し、Role から継承させる必要があります。単一の役割モデルに固執したい場合、一括割り当ての脆弱性にさらされることなく動的な役割を持つにはどうすればよいですか?
おまけの質問: User has_many roles (ユーザーはロール タイプごとに 1 つのレコードを持つことができます) または has_one role (ユーザーはロール レコードを 1 つしか持つことができず、ロールが変更された場合に切り替える必要があります) パターンを使用する必要がありますか?
ruby-on-rails - 保護された属性を一括割り当てできません: 整数
Rails を使用したアジャイル Web 開発 (第 4 版) のチュートリアルに従っていますが、約 112 ページでエラーが発生し始めます。
2 は song_id です。モデルで「#attr_accessible」を使用していません。これは、移行のためにこのコードを導入したときに発生し始めます
と
編集
co を再確認した後、エラーがコントローラーにあることに気付きました。このように見える
def create @cart = current_cart song = Song.find(params[:song_id]) @line_item = @cart.line_items.build @line_item.song = song @line_item = @cart.add_song(song.id)
これは問題を引き起こす行です
@line_item = @cart.add_song(song.id)
security - CakePHPは、変更されたデータを保存するときに、一括割り当ての脆弱性を自動的に処理しますか?
編集:
DCoderからより多くの情報を受け取った後、私がここで探していたフレーズは「大量割り当ての脆弱性」です。つまり、初期フォームに存在するかどうかに関係なく、すべての有効なフィールドをデータベースに保存するメソッドの利便性を利用します(意図したフィールドよりも多くの[おそらくより重要な]フィールドを含む操作されたPOSTデータに対して脆弱になります) )。
次に、2つの一般的な応答は、ホワイトリストとブラックリストに適切に名前が付けられます。変更を目的としたフィールドをホワイトリストに登録するか、変更してはならないフィールドをブラックリストに登録します。
次に、私の質問は次のとおりです。CakePHPは、送信フォームのフィールドのみを自動的にホワイトリストに登録しますか、それとも私(および他のCakeファン)が適切にホワイトリストに登録またはブラックリストに登録するように注意する必要がありますか?
元の質問:
Cakeは、フォームを生成してほぼ自動的に処理するための多くの優れた方法を提供します。セキュリティについて考えていたとき、Cakeは送信されたフォームにどのフィールドが存在するかを認識しているのでしょうか、それとも単に有効なフィールドを受け入れるのでしょうか。私が意味をなさない場合は、次のシナリオを採用してください(そして、誰かが私の質問を編集して、より良い表現方法を考えられる場合は、より適切な表現にすることができます):
ユーザーにプロファイルの編集を許可するとします。アクションの下に、ユーザー名、電子メール、およびパスワードのフィールドを持つフォームを作成しますedit
。
賢いユーザーは、is_admin
フィールドをからfalse
に変更したいので、firebugなどのアプリを使用して、に設定されたフィールドを含むtrue
カスタム投稿データをアクションに送信します。edit
is_admin
true
問題は、Cakeがそれ自体でis_admin
元の形式ではなかったことに気付くのでしょうか、それとも、特定のアクションで変更できるフィールドのみを明示的に指定するように注意する必要があるのでしょうか。もっと簡単な方法はありますか?
ありがとうございました!
ジェームズ
magento - Magentoの製品をカテゴリに一括割り当て
タイトルにあるように、製品をカテゴリに一括割り当てする必要があり、管理者からは一度に1つの製品しか編集できません。カテゴリページの[カテゴリ製品]タブからそれらを一括追加しても機能しない理由がわかりません。
そのため、phpMyAdminなどを使用するなど、高速な別のメソッドが必要です。
何か助けはありますか?
前もって感謝します!
ruby-on-rails - ネストされたfields_forでの一括割り当てエラー
私はこの質問が何度も聞かれたことを知っています。私はすでに問題なく何度もアプリにネストfields_for
しているので、今回はなぜ機能しないのか混乱しています。このトピックを再度取り上げたことをお詫び申し上げます。
ユーザーモデルがあります。ユーザーは多くのアカウントを持つことができます。ユーザーが少なくとも1つのアカウントなしで存在するのを防ぐために、アカウントsemantic_fields_for
を設定するための1つの入力だけで、新しいユーザーフォームにネストされていますrole_id
。
クラスユーザー
クラスアカウント
ユーザー/新規
つまり、要約すると、ユーザーとアカウントの間に関連付けが設定されています。ユーザーモデルにはが含まれaccepts_nested_attributes_for
、ユーザーモデルにはが含まれattr_accessible :accounts_attributes
、semantic_fields_for
正しく設定されています。私が得るエラーは次のとおりです。
保護された属性を一括割り当てできません:アカウント
送信されたフォームのスタックトレースには、すべての正しい変数が含まれています。アカウントrole_id
はネストされた属性によって正しく設定されています。レコードは、一括割り当てエラーのために単に拒否されていますが、私の属性はすべて適切に保護されているようです。
Rails3.2.3およびFormtastic2.2の使用。
編集済み
クラスUsersController
def new
終わり
ユーザー/新規
ruby-on-rails - 保護された属性を一括割り当てできません:first_name、last_name、email、password、password_confirmation
devise gemを使用したuser
モデルがありますが、どのフィールドにもありませんが、エラーが発生します。attr_accessible
保護された属性を一括割り当てできません
以下の私User
のクラス
ruby-on-rails - 一括割り当てコードが機能しない理由
Rails 3.1.4 アプリの sys_log モデルで定義された大量の割り当てがあります。
ログを保存するメソッドが application_controller で定義されています。
ただし、一括割り当ては機能しません。警告メッセージは次のとおりです。
:new_log が定義どおりに機能していません。上記のコードの何が問題になっていますか? 本当にありがとう。
ruby-on-rails - 大量割り当てを防止する Rails 親子フォームの例
Rails 3.2 を使用しており、一括割り当てを防止したいと考えています。親子関係があります。
私の routes.rb では、子リソースが親リソース内にネストされていません。これで、で新しい子を作成するためのリンクができましたnew_child_path(@parent.id)
。これは私に指示しlocalhost:3000/child/new?parent_id=1
、私はnew
行動に移します:
_form.html.erb
私の質問は:子エンティティに対してmy を記述する方法は? 私の作成アクションでは、一括割り当てのために分割されるため、f.hidden_field
使用できません。parent_id
一方、parent_id
子供を救うときは、親を知るために通過する必要があります。これについては、適切な実例が見つかりませんでした。
ruby-on-rails-3 - attr_encrypted (attr_encryptor) gem 使用時の MassAssignmentSecurity エラー
Rails 3.2.3 アプリでは、attr_encrypted の danpal によるフォークである attr_encryptor を使用しています。hereの指示に従っていますが、新しいPatient
レコードを作成しようとすると、次のエラー メッセージが表示されます。
指示が示すように、暗号化されていない対応する列を削除しながら、、、および列をテーブルencrypted_#{field}
にencrypted_#{field}_salt
追加encrypted_#{field}_iv
しました。Patients
Patient
モデルは次のようになります。
コントローラーのメソッドは次のようになりcreate
ます。Patient
私は何を間違っていますか?助けてくれてありがとう!