Arhn - архитектура программирования

Есть ли способ в Laravel показать html и предотвратить атаку xss?

Я хочу показать HTML, который вводится пользователем из внешнего интерфейса, и тот же текст, который я должен показать в бэкэнде (панели администратора), поэтому я использую {!! !!} в Laravel для отображения HTML, но недавно я заметил, что он не предотвращает атаку XSS, поэтому, если кто-то добавил этот код в тексте <script>alert('xss')</script>, чем он показывает предупреждение в бэкэнде, так есть ли в Laravel способ показать HTML, но предотвратить атаку XSS.

08.08.2019

  • Зачем вообще нужно выводить необработанный HTML? 08.08.2019
  • На самом деле это не xss-атака, а инъекция скрипта. Вы не можете предотвратить это, не удалив весь html из входных строк. 08.08.2019
  • @Thomas Я хочу показать HTML, который вводит пользователь в бэкэнде. 08.08.2019
  • @Jerodev Я знаю, что хочу предотвратить этот тег, но я спрашиваю, есть ли встроенная функция в laravel для этого 08.08.2019
  • Нет, но есть много функций php, которые могут вам в этом помочь, например strip_tags. 08.08.2019
  • так есть ли список тегов, которые мне нужно удалить из HTML, чтобы предотвратить атаку? @Jerodev 08.08.2019
  • Как насчет использования bbcode для HTML, введенного пользователями, в сочетании с strip_tags? 08.08.2019
  • @Thomas в сохранении нет проблем, я просто хочу показать HTML, но убедиться, что XSS-атака не будет выполнена. 08.08.2019
  • Да, но это очень сложная проблема, потому что браузеры иногда даже выполняют искаженный javascript, если вы достаточно их обманете. Поэтому трудно сделать это идеально. 08.08.2019
  • Чтобы подтвердить мою точку зрения: owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet 08.08.2019
  • Другим способом сделать это может быть Markdown — в сочетании с каким-либо визуальным редактором это предоставляет множество возможностей для редакторов, сохраняя при этом основные аспекты безопасности. 08.08.2019
  • @NicoHaase, можете ли вы привести какой-нибудь пример или ссылку? 08.08.2019

Ответы:


1

Вы можете использовать очиститель html.

Импортируйте этот пакет: https://github.com/mewebstudio/Purifier.

Затем вы можете использовать

clean(Input::get('inputname'));

У него отличный конфиг, настраивайте его по своему вкусу.

опубликовать его с

$ php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider"
08.08.2019
  • Это большая ответственность за использование сторонней библиотеки. 08.08.2019
  • Я использовал его много, и я вижу, откуда вы берете. Что вы порекомендуете? так как ты не согласен со мной 08.08.2019
  • @JasperHelmich Спасибо за ваш ответ, но есть ли в laravel функция по умолчанию? 08.08.2019
  • Я бы попытался решить корень проблемы: зачем вам выводить сам html в переменной? 08.08.2019

  • 2

    Если вы хотите отобразить точно такой же текст или HTML, введенный пользователем, вам не нужно использовать {!! !!}, вместо этого вы можете использовать {{ $your_text }}. Он будет работать именно так, как вы хотите.

    08.08.2019
  • в лезвии Laravel нет ничего похожего на одну фигурную скобку ({}). Тем не менее, я пробовал это, но у меня это не сработало 08.08.2019
  • Я имею в виду {{ $your_text }} . 08.08.2019
  • Да, он ускользнет от вашего html, но он будет отображать ваш HTML как ‹script›alert('xss')‹/script› вместо отображения предупреждения, и я думаю, это то, что вы хотите 09.08.2019
  • Брат прочитал вопрос, я хочу показать HTML как HTML, а не как текст 09.08.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..