Что еще я могу сделать, чтобы предотвратить инъекции XSS и SQL? - PullRequest
0 голосов
/ 15 августа 2010

Если мой сайт когда-нибудь заработает (не думаю, что сейчас, это всего лишь учебное упражнение).

Я использую mysql_real_escape_string (); по данным из POST, SERVER и GET. Кроме того, я использовал intval (); на строках, которые должны быть только числами.

Я думаю, что это покрывает меня от sql инъекций ? Правильный? Могу ли я сделать больше?

Но я не уверен, как он обеспечивает (если вообще обеспечивает защиту) от XSS-инъекцию ?

Любая дополнительная информация о том, как бороться с этими двумя формами атак, приветствуется.

Ответы [ 2 ]

5 голосов
/ 15 августа 2010

Я думаю, что это покрывает меня от инъекций sql?Правильно?

Нет.Это делает ужасный беспорядок ваших данных.

Могу ли я сделать больше?

Да.Вы можете защитить свой код от SQL-инъекций.
Вот краткое объяснение, которое я уже сделал
Только я должен добавить, что вы не должны портить исходные данныемассивы.
Массив POST не имеет ничего общего с SQL.Данные могут отправляться в электронную почту, HTML-форму, файл, онлайн-сервис и т. Д. Зачем обрабатывать все это с помощью защиты SQL?
С другой стороны, вы можете получать данные не из POST, а из файла, онлайн-службы, другой запрос.
Таким образом, вы должны защищать не исходные массивы, а фактические данные, которые входят в запрос

Говоря о XSS, опять не существует простого универсального правила.
Но в целом вы должны использовать htmlspecialchars($data,ENT_QUOTES); для всех ненадежных данных, которые вы выводите в виде текста, и некоторые другие виды проверок в некоторых особых случаях, таких как имена файлов

0 голосов
/ 15 августа 2010

Используются жестко закодированные подготовленные запросы

...