私は、サインアップページにユニバーサルセキュリティキー(定義された文字列)を使用して、それに付属のユーザーがサインアップできるようにします。これは、登録者が意図された人々であることを保証するためです。Rails - サインアップフォームにセキュリティキーを追加
私のユーザースキーマでは、サインアップページでユーザーサインアップページのセキュリティキーの入力を受け入れることができるように、文字列「security_key」があります。私はこれを実装する方法がわかりません。
私は、サインアップページにユニバーサルセキュリティキー(定義された文字列)を使用して、それに付属のユーザーがサインアップできるようにします。これは、登録者が意図された人々であることを保証するためです。Rails - サインアップフォームにセキュリティキーを追加
私のユーザースキーマでは、サインアップページでユーザーサインアップページのセキュリティキーの入力を受け入れることができるように、文字列「security_key」があります。私はこれを実装する方法がわかりません。
鍵をユニバーサルにしたいので、サインアップフォームには、提供されたセキュリティキーを入力するためにtext_field
が必要です。することができますあなたのregistrations_controller
で、その後
、:
before_action :validate_security_key
private
def validate_security_key
head :forbidden and return unless params[:security_key] == ENV.fetch('SECURITY_KEY')
end
意見/勧告:は意味がセキュリティキーを作成するにはありません
ユニバーサルすなわち安全ではありません。あなたがサインアップしている人に固有なので、私はsecurity_key
が登録用サインアップURLを提供する電子メール/テキストまたはその他の媒体を通じてそれらに提供されると考えます。したがって、そのセキュリティキーをURL自体にparamとして含めることをお勧めします。それをアプリで確認してください。例えば:あなたのメーラーで
:あなたのUserモデルで
link_to new_user_sign_up_url + "?security_key=#{User.security_key(@email)}"
:
def security_key(email)
Digest::SHA256.hexdigest "#{email}MySecuredKey#{ENV.fetch('UNIVERSAL_SECURITY_KEY')}"
end
とあなたのbefore_actionがに変更されます:
def validate_security_key
head :forbidden and return unless params[:security_key] == User.security_key(params[:email])
end
はそれがお役に立てば幸いです。
セキュリティキーを格納する別のテーブルを作成します。 次に、登録時にユーザーが提供したセキュリティキーを照合することができます。 おそらくregestration_controller
にbefore_action
フックを追加して、check_security_key
というメソッドを呼び出します。
def check_security_key
unless SecurityKey.where(s_key: params[:security_key]).first.present?
redirect_to signup_path
end
end
これは単なるアイデアです。任意の表名、列名を使用できます。