@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: ... браузер сам все блокировал.
Все ли я делаю правильно? Заранее благодарю за советы.
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@Wentixon
  1. Правильно, но для удобства, а также избежания подобных ошибок используют ORM. Там даже сложновато подобные уязвимости сделать, надо постараться.
  2. Да, htmlspecialchars экранирует теги, strip_tags удаляет их. Опять же эти вещи делают шаблонизаторы, погуглите.
  3. 2 параметр указывает формат экранирование, что экранировать, что нет. Ты написал что то странное.. Про то, что делает каждый флаг описано в доке


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

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

Войти через центр авторизации
Похожие вопросы
Арт-Медиа Киров
от 50 000 руб.
ГК АРТИ Москва
от 120 000 до 150 000 руб.
Seedup Санкт-Петербург
от 90 000 руб.
22 марта 2019, в 09:52
20000 руб./за проект
22 марта 2019, в 06:30
10000 руб./за проект
22 марта 2019, в 03:12
20000 руб./за проект