Запретить сайту запускать код javascript из базы данных

Поэтому я провел эксперимент с функцией php htmlspecialchars() с входом из браузера. Это работает, и значение, отраженное от базы данных, не запускает скрипт. Однако, если я ввожу скрипт непосредственно в базу данных, то есть в phpMyAdmin, коды:

<?php echo htmlspecialchars($row['fname'], ENT_QUOTES | ENT_HTML5, 'UTF-8');?>

А также

<?php echo  htmlspecialchars($row['lname']);?>

По-прежнему запускает javascript, который я поместил прямо в базу данных в браузере. Это связано с типом сортировки базы данных или с чем-то еще?

Почему вы отметили javascript свой вопрос, если ваш вопрос не имеет отношения к языку? Я бы посоветовал вам удалить его, прежде чем вы обнаружите, что ваш вопрос был отклонен или закрыт.

NewToJS 10.03.2019 07:01

Вы храните этот PHP в своей БД?

user3783243 10.03.2019 07:02

Нет, это пример кода в файле php. Я попытался вставить в базу данных прямой js-скрипт, который все еще работал даже с htmlspecialchars

Deer-san 10.03.2019 16:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
204
1

Ответы 1

JavaScript (с точки зрения PHP/MySQL) — это просто строка, как и любая другая строка.

Вам нужно знать, когда/что/как фильтр и когда/что/как побег.

Фильтр: отфильтровывает вредоносные строки до и вставляет их в базу данных. Нравится функция strip_tags()

Побег: Экранирующие символы (например, ", ', <, > и т. д.) до распечатывают результат, который может дать вам нежелательный результат. Нравится функция htmlspecialchars()


Предупреждение

Хранить JavaScript в БД, а затем выводить его в браузер легко, но и опасно! Убедитесь, что это разрешено только пользователям с правами администратора.

Так что в идеале перед публикацией данных я должен использовать $variable = strip_tags($_POST['variable']); then use htmlspecialchars()` для эха? Мне придется снова проверить код, htmlspecialchars() по-прежнему не препятствует запуску скрипта на этом ` <?php echo htmlspecialchars($row['lname']);?>`

Deer-san 10.03.2019 16:19

@Deer-san Просто щелкните правой кнопкой мыши> просмотреть исходный код страницы и посмотрите, что из этого выйдет. Если вы хотите распечатать код JavaScript в HTML как читаемый текст для пользователей, вам нужно просто заменить < на &lt; и заменить > на &gt;. Замена этих символов на самом деле выполняется htmlspecialchars()

evilReiko 11.03.2019 06:24

Другие вопросы по теме