首页 > 解决方案 > 停止使用 cookie 从 opencart 外部调用 opencart 1.5 控制器功能

问题描述

我正在使用 opencart 1.5 版本。我在控制器中有一个功能并且想在结帐时调用。这工作正常。但问题是像黑客这样的人在 opencart 之外调用这个函数,并在我的数据库中存储了一些不需要的假数据。所以我想停止从opencart外部调用该控制器功能。它应该只从 opencart 结帐中调用,如 ajax 调用。严禁使用 cookie 在外部(外部客户端)调用该函数。

标签: cookiesopencart

解决方案


我猜你想防止对控制器方法的CSRF攻击。您可以尝试在 Controller 方法中进行Token 验证。将令牌设置为某个值,然后检查控制器是否是相同的令牌。如果匹配,则执行业务逻辑,否则什么也不做(或报告)。

在结帐模块上实现这一点。

     $token= md5(uniqid());
     $_SESSION['csrf_token']= $token;

现在匹配 SESSION 中的令牌和请求控制器方法中的一个:

     $token = $this->session->data['csrf_token'];
     unset($this->session->data['csrf_token']);
     if ($token && $this->request->post['token'] == $token) {
       // Apply your Business Logic
     } else {
       // Log a potential CSRF attack.
     }

有更复杂的方法可以做到这一点,但我认为这应该会有所帮助。


推荐阅读