forms - Symfony 1.4 : Custom error message for CSRF in forms

标签 forms symfony1 csrf sfguard

谁能告诉我在哪里/如何为 Symfony 1.4 中的表单自定义 CSRF token 错误消息。我正在使用 sfDoctrineGuard 进行登录,特别是在这种形式中,每当 session 用完而您仍然打开页面时,它会抛出一个对用户非常不友好的错误:“检测到 CSRF 攻击”。诸如“此 session 已过期。请返回主页并重试”之类的内容听起来更好。

在表单类中执行此操作的正确方法是什么?

谢谢。

最佳答案

唯一的方法似乎是覆盖 sfForm::addCSRFProtection() .

/lib/form/BaseForm.class.php你可以添加这段代码:

class BaseForm extends sfFormSymfony
{
    public function addCSRFProtection($secret = null)
    {
        parent::addCSRFProtection($secret);
        if (array_key_exists(self::$CSRFFieldName, $this->getValidatorSchema())) {
            $this->getValidator(self::$CSRFFieldName)->setMessage('csrf_attack', 'This session has expired. Please return to the home page and try again.');
        }
    }
}

调用父方法后,检索与CSRF 字段关联的验证器并更改代码csrf_attack 的消息。 .

编辑:您还需要检查验证器是否存在。某些表单可能禁用了 CSRF 保护!

希望这可以帮助!

关于forms - Symfony 1.4 : Custom error message for CSRF in forms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578397/

相关文章:

php - 保护登录和评论表单免受 CSRF

Django根据另一个字段表单更新表单

php - 如何在 PHP 中访问未知名称的复选框

php - Yii 条件验证

file-upload - 如何在不使用特定表单的情况下在 Symfony 1.2 中上传文件

php - 如何删除 Doctrine Doctrine_RawSql查询中的特定dql部分?

php - Symfony - 创建插件需要什么?

使用单选按钮和文本框进行 JavaScript 表单计算

ruby-on-rails - Rails 无法使用 X-CSRF-TOKEN header 验证 CSRF token 真实性 ajax

security - Grails - 是否有推荐的方法来处理 AJAX 形式的 CSRF 攻击?