Laravel 在刀片中使用 {!!nl2br(e())!!} 是否安全

Kio*_*iow 3 xss laravel

为了使用新行在 Laravel 刀片模板中输出文本,我使用以下命令:

{!! nl2br(e($prodData->text))!!}
Run Code Online (Sandbox Code Playgroud)

插入数据时,我不会对数据进行消毒,我只是将其修剪为仅允许连续两个新行,如下所示:

public function setDescriptionAttribute($description)
  {
      $this->attributes['description'] = preg_replace('~(\R{2})\R+~', '$1', $description);
  }
Run Code Online (Sandbox Code Playgroud)

但是现在我担心{!!nl2br(e())!!}会导致 xss 注入,所以使用安全吗?

Jon*_*eir 5

如果e()是安全的,那么{!! nl2br(e()) !!}就是安全的(“安全”与“安全”)。

{{ $foo }}相当于{!! e($foo) !!}。所以{!! nl2br(e()) !!}是适合自己情况的正确的方法。

关于@Loek 的回答:e()取决于htmlspecialchars(). 如果存在一个缺陷htmlspecialchars(),基本上每个 PHP 网站都会有一个问题。