转义@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(..)