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;
}
}
