@sverhvova

Sql and xss все ли я правильно понял?

1) Ввод информации в базу данных с использованием PDO: подготовить запрос, привязать переменные с указанием типа и execute, если входных данных нет можно и query. Если id, допустим статьи, передается через GET запрос, нужно привести его к integer $sth->bindValue(1, (int) $id, PDO::PARAM_INT); Если среди входных данных, например, название колонки в таблице, лучше использовать заранее подготовленный массив со всеми названиями колонок, проверять на наличие in_array(), если есть выполнять.
2) Информацию из базы данных(введенную пользователем)выводить внутрь тега после выполнения htmlspecialchars или strip_tags;
3) Если информация выводится не в тег, а его атрибут (Например, мы хотим оставить в input'e значение при неправильном заполнении формы) использовать htmlspecialchars со вторым аргументом ENT_QUOTES, т к значение атрибута value может быть заключено не в двойные, а одинарные кавычки.
Пробовал через уязвимости добавлять блоки с событиями или ссылки с href="javascript: ... браузер сам все блокировал.
Все ли я делаю правильно? Заранее благодарю за советы.
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
@Wentixon
  1. Правильно, но для удобства, а также избежания подобных ошибок используют ORM. Там даже сложновато подобные уязвимости сделать, надо постараться.
  2. Да, htmlspecialchars экранирует теги, strip_tags удаляет их. Опять же эти вещи делают шаблонизаторы, погуглите.
  3. 2 параметр указывает формат экранирование, что экранировать, что нет. Ты написал что то странное.. Про то, что делает каждый флаг описано в доке


Если браузер блокирует, значит неправильно что то делаешь. Ты должен просто увидеть скрипт
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы