当我插入数据时,我不会以任何方式清理文本,我只是做一些小事情,比如将第一个字母大写,并在连续两个以上时去除换行符。
所以如果我现在使用以下方式输出文本:
{{ $text }}
我很安全,因为这样 Laravel 会删除任何危险的数据/标签以防止 xss。但现在的问题是我的文本中没有任何换行符。
所以现在我尝试了这个:
{!! nl2br(e($text))!!}
这似乎有效,我保留换行符,并且诸如
<script>alert('xss');</script>
之类的内容作为普通文本输出。但这是在 Laravel 中安全输出文本同时保持换行的正确方法吗?
是的,这是实现这一目标的正确方法。
{{ $text }}
相当于 {!! e($text) !!}
。