转义@section 标签中的内容
Escaping content in @section tag
我定义了一个名为 title
的 Blade 部分,我使用它,例如 @section('title', 'Log in')
,然后将打印为 <h1>Log in</h1>
。但是在某些页面上,标题将由用户输入确定(即 $subject
)。我发现如果我这样做 @section('title', $subject->name)
那么这个值将不会被转义,这使得我的网站容易受到 XSS 攻击。我怎样才能避免这种情况?
在 Laravel 中,您可以使用 e
辅助函数来转义值。你应该能够做这样的事情:
@section('title', e($subject->name))
如果您查看 BladeCompiler
代码,您会发现 Laravel 本身将默认的转义输出 ({{ }}
) 转换为 e(..)
我定义了一个名为 title
的 Blade 部分,我使用它,例如 @section('title', 'Log in')
,然后将打印为 <h1>Log in</h1>
。但是在某些页面上,标题将由用户输入确定(即 $subject
)。我发现如果我这样做 @section('title', $subject->name)
那么这个值将不会被转义,这使得我的网站容易受到 XSS 攻击。我怎样才能避免这种情况?
在 Laravel 中,您可以使用 e
辅助函数来转义值。你应该能够做这样的事情:
@section('title', e($subject->name))
如果您查看 BladeCompiler
代码,您会发现 Laravel 本身将默认的转义输出 ({{ }}
) 转换为 e(..)