通过表单将外键传递给不同的控制器,而不会产生批量分配安全风险



我担心在我的rails应用程序中实现功能的安全性。

我有两个模型,评估和评估尝试。

"评估显示"视图显示一个窗体(它是多项选择测试窗体),但数据将发送到 AssessmentTry 控制器,而不是"评估",后者记录测试中的user_id、assessment_id和用户选择。

当前用户的 ID 不作为表单的一部分提交,但目前我正在将assessment_id作为隐藏字段提交(取自 URL,例如/assessments/1)。

不应

修改:用户不应能够更改该值,否则他们的选择将与不同的测试问题相关联。

有没有比使用隐藏字段更好的方法将该assessment_id放入评估尝试控制器?

谢谢!

您可以在数据库中为 AssessmentTry 创建一个初始条目。 为 AssessmentTry 提供一个唯一的标记列,并使用它来验证用户的测试作为表单中的隐藏字段。

例:

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

好消息:您有未完成尝试的历史和一些额外的跨站点保护

坏消息:数据库中的空行。

最新更新