在 Laravel 集体中使用双花括号
Using double curly brace in Laravel Collective
我正在尝试创建像这样创建用户的表单,此表单将用于显示数据,也使用表单模型绑定:
{{ Form::open(['url' => 'admin/users/create']) }}
<div class="form-group">
{{ Form::label('first_name', 'First Name : ') }}
{{ Form::text('first_name', null, ['class' => 'form-control']) }}
</div>
<div class="form-group">
{{ Form::label('last_name', 'Last Name : ') }}
{{ Form::text('last_name', null, ['class' => 'form-control']) }}
</div>
{{ Form::close() }}
但是它显示的代码不是实际视图,所以我在浏览器中看到了这段代码:
<form method="POST" action="http://localhost:8000/admin/users/create" accept-charset="UTF-8">
<input name="_token" type="hidden" value="X5MA46MJctYOYeMtZF1RoQKYmWDtAbsSoxwoOA8Y">
<label for="first_name">First Name : </label>
<input class="form-control" name="first_name" type="text" id="first_name">
<label for="last_name">Last Name : </label>
<input class="form-control" name="last_name" type="text" id="last_name">
</form>
但是当尝试使用 {!! !!}
作为左括号和右括号时,代码有效并显示实际视图。
我仍然不明白为什么我不能使用 {{ }}
作为我的括号使用 laravel-collective and if you see this Project 它工作正常。
也有点害怕 XSS 攻击,就像 laravel documentation 在 显示未转义数据 部分所说:
Note: Be very careful when echoing content that is supplied by users
of your application. Always use the double curly brace syntax to
escape any HTML entities in the content.
对此有什么有用的解释吗?谢谢
注意:我使用的是 Laravel 版本 5.1.40 (LTS)
因为 {{ }} 用于转义 HTML 实体,以防止 XSS 攻击您的输入显示在您的 server/database 中。
因此,如果有人在您的数据库中插入了恶意代码,那么用户将无法执行该代码,而只会在屏幕上打印出来。像这样
$dbValue = "<script> Some evil code </script>";
{{ $dbValue }}
它会这样输出
<script> Some evil code </script>
并且因为 Laravel 集体 HTML 表格正在生成 HTML 供您显示,所以您必须使用 {!! !!} 以防止转义。
{!! "<b>Bold Text</b>" !!}
然后它会输出这个
粗体字
生成 HTML 没问题,但您必须小心将您的值发送到您的服务器并显示给用户。在那里你总是需要使用 {{ }}
来转义你的数据
我正在尝试创建像这样创建用户的表单,此表单将用于显示数据,也使用表单模型绑定:
{{ Form::open(['url' => 'admin/users/create']) }}
<div class="form-group">
{{ Form::label('first_name', 'First Name : ') }}
{{ Form::text('first_name', null, ['class' => 'form-control']) }}
</div>
<div class="form-group">
{{ Form::label('last_name', 'Last Name : ') }}
{{ Form::text('last_name', null, ['class' => 'form-control']) }}
</div>
{{ Form::close() }}
但是它显示的代码不是实际视图,所以我在浏览器中看到了这段代码:
<form method="POST" action="http://localhost:8000/admin/users/create" accept-charset="UTF-8">
<input name="_token" type="hidden" value="X5MA46MJctYOYeMtZF1RoQKYmWDtAbsSoxwoOA8Y">
<label for="first_name">First Name : </label>
<input class="form-control" name="first_name" type="text" id="first_name">
<label for="last_name">Last Name : </label>
<input class="form-control" name="last_name" type="text" id="last_name">
</form>
但是当尝试使用 {!! !!}
作为左括号和右括号时,代码有效并显示实际视图。
我仍然不明白为什么我不能使用 {{ }}
作为我的括号使用 laravel-collective and if you see this Project 它工作正常。
也有点害怕 XSS 攻击,就像 laravel documentation 在 显示未转义数据 部分所说:
Note: Be very careful when echoing content that is supplied by users of your application. Always use the double curly brace syntax to escape any HTML entities in the content.
对此有什么有用的解释吗?谢谢
注意:我使用的是 Laravel 版本 5.1.40 (LTS)
因为 {{ }} 用于转义 HTML 实体,以防止 XSS 攻击您的输入显示在您的 server/database 中。
因此,如果有人在您的数据库中插入了恶意代码,那么用户将无法执行该代码,而只会在屏幕上打印出来。像这样
$dbValue = "<script> Some evil code </script>";
{{ $dbValue }}
它会这样输出
<script> Some evil code </script>
并且因为 Laravel 集体 HTML 表格正在生成 HTML 供您显示,所以您必须使用 {!! !!} 以防止转义。
{!! "<b>Bold Text</b>" !!}
然后它会输出这个
粗体字
生成 HTML 没问题,但您必须小心将您的值发送到您的服务器并显示给用户。在那里你总是需要使用 {{ }}
来转义你的数据