Magento 2 绕过Post请求的 CSRF 验证

Posted by

CSRF:跨站点请求伪造 ,在 CSRF 攻击中,用户被欺骗提交他们不想提交的 Web 请求,种对网站的恶意利用,未经授权的命令从 Web 应用程序信任的用户传输.

Magento 2 允许出于安全目的防止 CSRF 攻击。但是,在某些情况下,Magento 2 中的某些请求需要绕过 CSRF 验证。

例如,我必须实现一个功能,在自定义付款方式成功付款后,用户被重定向到主页。但问题是,“无效的表单密钥”错误。

当 CSRF 令牌已过期或令牌未正确实现时,会发生此错误。为了解决“无效的表单键”错误,请按照以下方法:

Magento 2中某些请求绕过CSRF验证的方法:

namespace Vendor\Extension\Controller\Checkout;
 
use Magento\Framework\App\Action;
use Magento\Framework\App\CsrfAwareActionInterface;
use Magento\Framework\App\Request\InvalidRequestException;
use Magento\Framework\App\RequestInterface;
 
class Response extends Action\Action implements CsrfAwareActionInterface
{
 public function __construct(
        Action\Context $context,
    )
    {
        parent::__construct($context);
    }
 
    public function execute()
    {
        
    }
 
    public function createCsrfValidationException(RequestInterface $request): ?InvalidRequestException
    {
        return null;
    }
 
    public function validateForCsrf(RequestInterface $request): ?bool
    {
        return true;
    }
}