这一行在Laravel Blade模板中是安全的吗?


Is this line safe from XSS in Laravel Blade templates

这是否安全?用于Laravel的裸模板

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

我转义了我输出的那个,但是我也应该转义选中的那个吗?

谢谢!

SQL注入是一个输入问题,而不是输出问题。转义输出有助于避免XSS问题。在这种情况下,您很好,但只是整理一下您的代码:

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

如果first_name为空,value将为空。如果填充了名字,value将是转义后的输出。

编辑

回应评论

整洁的代码。未测试,但只有当$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 }}">