Я пытаюсь создать форму, которая создает пользователей, подобных этой, и эта форма будет использоваться для отображения данных также с помощью привязки модели формы:
{{ 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-атаки, как техническая документация сказал в разделе Отображение неэкранированных данных:
Примечание. Будьте внимательны при отображении контента, предоставленного пользователями.
вашего приложения. Всегда используйте синтаксис двойной фигурной скобки для
экранировать любые HTML-объекты в контенте.
Любое полезное объяснение по этому поводу? благодарю вас
ПРИМЕЧАНИЕ: я использую Laravel Версия 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 это хорошо, но вы должны быть осторожны с отправкой значений на ваш сервер и выводом их пользователю. Там вам всегда придется экранировать свои данные с помощью {{}}
Других решений пока нет …