Как защитить WYSIWYG-редактор от XSS-атак? - PullRequest
0 голосов
/ 02 февраля 2019

Я использую Summernote WYSIWYG-редактор (как показано ниже) и обнаружил, что он использует HTML-теги для форматирования текста.

<textarea name="body" id="editor" value="{{old('body')}}" rows="10" required></textarea>

Как защитить мое приложение от XSS-атак?Я сохраняю ввод в виде обычного текста и выводя с использованием: {!! $body !!}.

Можно ли отфильтровать textarea для уязвимого ввода, например: <script>alert("boom")</script>

1 Ответ

0 голосов
/ 02 февраля 2019

По умолчанию Laravel не предоставляет какого-либо механизма для удаления определенных тегов из заданного ввода, поэтому вам нужно использовать сторонний пакет, такой как Purifier .

Установка Purifier

Как показано ниже, Purifier можно просто установить с помощью Composer.

composer require mews/purifier

Конфигурация

Чтобы настроить параметры Purifier по умолчанию, опубликуйте файл конфигурации (config/purifier.php).

php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider"

Теперь перейдите к config/purifier.php и при необходимости настройте запись HTML.Allowed.Обратите внимание, что все теги, которые не перечислены в этой записи, будут удалены методом clean().

Подробную информацию о параметрах конфигурации можно найти здесь .


Пример

clean("<p>Good</p> <script>alert('Bad')</script>")

Выход: <p>Good</p>

...