我担心我在rails应用程序中实现的一个功能的安全性。
我有两个模型,评估和AssessmentAttempts。
评估显示视图显示一个表单(这是一个多项选择测试表单),但数据被发送到AssessmentAttempts控制器,而不是发送到评估,后者记录user_id、assessment_id和用户在测试中的选择。
当前用户的ID不会作为表单的一部分提交,但目前我将以隐藏字段的形式提交评估(取自URL,例如/ assessment_id /1)。
这不应该被修改:用户不应该能够更改该值,否则他们的选择将与不同的测试题相关联。
有没有比使用隐藏字段更好的将assessment_id放入AssessmentAttempts控制器的方法?
谢谢!
发布于 2012-11-14 22:15:33
您可以在数据库中为AssessmentAttempt创建初始条目。为AssessmentAttempt提供一个惟一的token列,并使用它作为表单中的隐藏字段来验证用户的测试。
示例:
token = SecureRandom.base64.tr("+/", "-_")好消息是:您有未完成的尝试和一些额外的跨站点保护的历史
坏消息是:数据库中的行为空。
https://stackoverflow.com/questions/13380234
复制相似问题