【发布时间】:2013-05-31 04:54:59
【问题描述】:
我在模型层验证了我的所有表单数据,但我还检查了我的表单是从哪里提交的(HTTP Referrer),我还发送了一个带有表单的令牌以帮助防止跨站点请求伪造,我的问题是这些应该在哪里做检查?在控制器还是在模型层?
我想了几种不同的方法来实现这一点,其中一种是在我的 AbstractController 中使用某种受保护的方法来验证表单源和发布的令牌,但这可能会破坏 SRP。
【问题讨论】:
-
我投票给控制器...该模型不应该绑定到它正在使用的环境。如果您将检查塞入模型中,那么您将如何使用模型说一个 cron 任务。
-
Referrer 检查几乎完全是浪费时间。您要么允许空引用者并让自己易受攻击,要么禁止它们并为合法用户破坏您的应用程序。同步器令牌是击败 CSRF 的有效措施;推荐人检查不是。
标签: php security model-view-controller