Я пытаюсь создать форму, которая создаст таких пользователей, и эта форма будет использоваться для отображения данных, также используя привязку формы модели:
{{ 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-коллектив, и если вы видите этот проект, он работает нормально.
Также боюсь, что XSS-атака точно так же, как документация laravel, говорится в разделе « Отображение неэкранированных данных» :
Примечание. Будьте осторожны при повторном обращении к содержимому, которое предоставляется пользователями вашего приложения. Всегда используйте синтаксис двойной фигурной скобки, чтобы избежать любых HTML-объектов в контенте.
любое полезное объяснение по этому поводу? Спасибо
ПРИМЕЧАНИЕ. Я использую Laravel Version 5.1.40 (LTS)
Поскольку {{}} используется для экранирования HTML-объектов, чтобы предотвратить атаки XSS для вашего ввода, отображаемого с вашего сервера / базы данных.
поэтому, если кто-то вставил вредоносный код в вашу базу данных, он не будет доступен для пользователя и вместо этого просто распечатает на экране. вот так
$dbValue = "<script> Some evil code </script>"; {{ $dbValue }}
Он будет выводиться как это
<script> Some evil code </script>
И поскольку Laravel Collective HTML FORM генерирует HTML для отображения, вы должны использовать {!! !}, чтобы избежать экранирования.
{!! "<b>Bold Text</b>" !!}
то он выведет это
Жирный текст
Для генерации HTML это нормально, но вы должны быть осторожны, чтобы ваши значения отправлялись на ваш сервер и отображались пользователю. Там вам всегда придется скрывать ваши данные с помощью {{}}