Использование двойной фигурной скобки в 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-коллектив и если вы видите это проект это работает нормально.

Также немного боится XSS-атаки, как техническая документация сказал в разделе Отображение неэкранированных данных:

Примечание. Будьте внимательны при отображении контента, предоставленного пользователями.
вашего приложения. Всегда используйте синтаксис двойной фигурной скобки для
экранировать любые HTML-объекты в контенте.

Любое полезное объяснение по этому поводу? благодарю вас

ПРИМЕЧАНИЕ: я использую Laravel Версия 5.1.40 (LTS)

1

Решение

Потому что {{}} используется для экранирования сущностей HTML, чтобы предотвратить атаки XSS для вашего ввода, отображаемого с вашего сервера / базы данных.

поэтому, если кто-то вставит вредоносный код в вашу базу данных, он не будет исполняемым для пользователя, а просто распечатается на экране. вот так

$dbValue = "<script> Some evil code </script>";

{{ $dbValue }}

Это будет выводить как это

<script> Some evil code </script>

А поскольку Laravel Collective HTML FORM генерирует HTML для вас для отображения, вы должны использовать {!! !!} чтобы избежать побега.

{!! "<b>Bold Text</b>" !!}

тогда это выведет это

Жирный текст

Для генерации HTML это хорошо, но вы должны быть осторожны с отправкой значений на ваш сервер и выводом их пользователю. Там вам всегда придется экранировать свои данные с помощью {{}}

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]