Как правильно санировать вывод пользователя - PullRequest
3 голосов
/ 29 июля 2011

Итак, я работаю над сайтом, где люди могут создавать темы и ответы на них. Пока что перед сохранением данных в базу данных я

  • используйте mysql_real_escape_string для очистки данных
  • проверьте количество строк в тексте (оно должно быть ниже, чем заданное максимальное число, например не более 10 строк)

И прежде чем отобразить его на экране, я

  • используйте htmlentities для очистки данных HTML
  • используйте nl2br , чтобы разрешить разрывы строк
  • используйте wordwrap для переноса текста в текст (строка должна содержать не более 75 символы)

Есть ли что-нибудь еще, что мог бы сделать злонамеренный пользователь, чтобы создать проблемы или сломать макет? И есть ли специальный код ASCII, который может вызвать проблемы? Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Еще одна вещь, о которой я могу подумать: если ваша база данных является числом, выполните проверку is_numeric для нее (или какую-то другую проверку, если это дробное число).строка, но он нарушит ваш запрос, несмотря на использование mysql_real_escape_string (при условии, что вы используете API-интерфейс mysql, а не API-интерфейс mysqli).

1 голос
/ 29 июля 2011

Единственное, чего вам не хватает, - это проверке ненадежных данных в «белом списке».mysql_real_escape_string экранирует данные, но это могут быть данные, которые вам не нужны в системе.Вам лучше описать, что вы разрешите разрешить, а затем отвергнуть или удалить что-либо еще, прежде чем бежать.

См. OWASP: белый список очистки:

...