php - 在哪里验证 MVC 应用程序中的表单引荐来源网址和 token ?

标签 php security model-view-controller

我在模型层验证我所有的表单数据,但我也检查我的表单是从哪里提交的(HTTP Referrer),我还发送一个带有表单的 token 以帮助防止跨站点请求伪造,我的问题是这些应该在哪里检查要做吗?在 Controller 层还是在模型层?

我想出了几种不同的方法来实现这一点,其中一种是在我的 AbstractController 中使用某种 protected 方法来验证表单源和发布的 token ,但这可能会破坏 SRP。

最佳答案

(..) where should these checks be done? In the controller or in the model layer?

都没有。

在我看来,CSRF 保护应该在与其他形式的访问控制相同的级别上处理:在 MVC 三元组之外。

如果应用程序无法验证 token ,则意味着 Request 实例(或您的替代实例)中的数据不可信,因此需要报废。我会在 初始化 Controller 和/View 实例之前执行此类检查。

关于php - 在哪里验证 MVC 应用程序中的表单引荐来源网址和 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16923861/

相关文章:

php - 在不刷新的情况下更新页面上的数据

spring - Spring Security 如何在概念上获得当前登录用户?

model-view-controller - Clojure 中的 MVC 模型

java - 具有数据持久性的概念的名称

java - 我的 JavaScript 安全吗

php - CASE 语句未运行两个 WHEN

PHP根据唯一值为对象生成rgb颜色

php - 如何在 Codeception 中强制测试失败

asp.net - 无法打开登录请求的数据库 "ASPNETDB"。登录失败。用户 'Philip-Desktop\Philip' 登录失败

javascript - 当使用来自其他域的图像时,为什么我的导航器会污染 Canvas ?