Выход из выхода может помочь защитить от распространенных уязвимостей - PullRequest
0 голосов
/ 22 ноября 2018
  • Clickjacking
  • Межсайтовый скриптинг
  • Кросс-Ste подделка запроса
  • SQL-инъекция

Этот вопрос является частьюРуководство по сертификации PHP 7 от ZEND.Представленный ответ в руководстве кажется неправильным!Мой ответ - межсайтовый скриптинг.Однако ответ, предоставленный руководством, - «Межсайтовый скриптинг» и «SQL-инъекция».Это не звучит правильно.Экранирующий ввод может защитить от внедрения SQL.Пожалуйста, поправьте меня, если я ошибаюсь!?

1 Ответ

0 голосов
/ 22 ноября 2018

Да, я думаю, ты абсолютно прав.Я думаю, что ваше руководство по сертификации неверно.Хотя в любом случае это кажется странным вопросом.

И в XSS, и в SQL-инъекции ключом здесь является то, что произвольные данные используются в контексте без их перевода в этот контекст.В некотором смысле, все дело в устранении неоднозначности «данных» из «команды».

Для HTML «данные» - это произвольные данные, которые предположительно являются текстовыми.Если вы хотите использовать текст в HTML, вам нужно экранировать зарезервированные символы, чтобы текст не интерпретировался как HTML.

Аналогично в SQL, если вы собираетесь объединить произвольные значения в запросе, вынужно убедиться, что они не интерпретируются как часть самого запроса (например, кавычки или что-то в этом роде), иначе у вас будет плохой день.(А еще лучше, в корне отделить данные от самого запроса с помощью подготовленных / параметризованных запросов, и это становится не проблема.)

Нет смысла, что экранирование вывода имеет какое-либо отношение к внедрению SQL ...если этот «выход» не является запросом, выводимым на сервер базы данных.

(Связанный: https://stackoverflow.com/a/7810880/362536)

...