0

Rails アプリの機能の実装のセキュリティが心配です。

Assessments と AssessmentAttempts の 2 つのモデルがあります。

Assessments 表示ビューにはフォームが表示されます (複数選択テスト フォームです) が、データは Assessments ではなく AssessmentAttempts コントローラーに送信されます。

現在のユーザーの ID はフォームの一部として送信されませんが、現在、assess_id を隠しフィールドとして送信しています (URL から取得されます (例: /assessments/1))。

これは変更しないでください。ユーザーがその値を変更できないようにする必要があります。そうしないと、ユーザーの選択が別のテスト問題に関連付けられます。

隠しフィールドを使用するよりも、assessment_id を AssessmentAttempts コントローラーに取得するためのより良い方法はありますか?

ありがとう!

4

1 に答える 1

1

データベースに AssessmentAttempt の初期エントリを作成できます。AssessmentAttempt に一意のトークン列を指定し、それを使用してユーザーのテストをフォームの非表示フィールドとして検証します。

例:

token = SecureRandom.base64.tr("+/", "-_")

良いニュース: 不完全な試行の履歴があり、いくつかの追加のクロスサイト保護があります

悪いニュース: データベースに空の行があります。

于 2012-11-14T14:15:33.343 に答える