Laravel Blade 模板中的 XSS 这条线是安全的吗

Is this line safe from XSS in Laravel Blade templates

这样安全吗? 用于 Laravel

的 balde 模板
{!! ($user->first_name ? ' value="' . e($user->first_name) . '"' : '') !!}

我对输出的进行了转义,但检查的是否也要进行转义?

谢谢!

SQL注入是输入问题,不是输出问题。转义输出是为了帮助避免 XSS 问题。在这种情况下,你很好,但只是稍微整理一下你的代码:

<input type="text" name="first_name" value="{{ $user->first_name }}" />

如果first_name为空,值将为空。如果填写名字,值将是转义输出。

编辑

回复评论

整洁的代码。未经测试,但只有当 $user 不是对象(或 $user->first_name 是无法隐式转换为字符串的值,如数组)时才会出错。

<input class="form-control width-50" required type="text" name="first_name" value="{{ !is_null(old('first_name')) ? old('first_name') : $user->first_name }}">