Санитарная обработка ввода для администраторов - PullRequest
2 голосов
/ 27 апреля 2011

В области администрирования моего сайта я использовал mysqli_real_escape_string при получении ввода формы, которая поступает в базу данных. Это работает нормально, но я понимаю, что это не предотвращает инъекции скриптов. Я имею в виду, я могу пройти через сценарии, такие как:

<script>alert('hello');</script>

Что я использую в дополнение к этому, чтобы не дать злонамеренному администратору внедрить некоторые неприятные вещи?

  • htmlentities()
  • strip_tags()
  • htmlspecialchars()

Как правильно обезопасить ввод форм в серверных формах, где HTML не требуется для входных данных? Я в замешательстве?

Ответы [ 5 ]

2 голосов
/ 27 апреля 2011

htmlentities() и htmlspecialchars() используются при выводе данных.Кодировка и экранирование разные.

Если вы не хотите использовать HTML, я рекомендую использовать strip_tags() для очистки его от любых тегов HTML и использовать html* при выводе содержимого.

Также, вы можете рассмотреть возможность перехода на MySQL PDO .Это гораздо более предпочтительный и безопасный способ выполнения ваших запросов.

0 голосов
/ 27 апреля 2011

Вы можете использовать функцию magic_quotes для очистки, если вы используете php 4 или меньше, php 5.2 или меньше.

0 голосов
/ 27 апреля 2011

Правильный ответ сильно зависит от вашего приложения.

Многим системам администрирования нужен способ для администраторов манипулировать HTML.Но некоторые HTML более опасны, чем другие.

Как сказал ДжонП, strip_tags () может быть полезным, поскольку второй параметр позволяет явно разрешать определенные, безвредные теги (такие как или),убирая что-то еще (например, или)

Если вам нужно больше изощренности, вам нужно будет провести более тщательный анализ и найти решение, отвечающее вашим потребностям.(Подсказка: если это решение предполагает использование регулярных выражений для сопоставления тегов HTML, вы, вероятно, захотите сделать шаг назад)

0 голосов
/ 27 апреля 2011

Термин, который вы ищете, это Cross Site Scripting или XSS для краткости. Поиск этого должен дать вам много ресурсов, таких как этот вопрос прямо здесь, в StackOverflow.

0 голосов
/ 27 апреля 2011

Вы должны использовать htmlentities().

...