Санация PHP для пользовательского ввода - PullRequest
0 голосов
/ 07 января 2012

Я читал много споров о плюсах и минусах дезинфекции пользовательского ввода, и, похоже, нет однозначного ответа в любом случае.

Мой сценарий заключается в том, что я собираю адреса электронной почты через форму HTML / jQuery, чтобы эти адреса электронной почты можно было использовать в списке рассылки. На этом этапе не будет извлечения данных из базы данных, поэтому не нужно использовать JSON, XML и т. Д.

Мне нужно беспокоиться о дезинфекции пользовательского ввода или нет? Похоже, что многие люди говорят, что санитарная обработка в пути не нужна, в то время как другие говорят, что вы никогда не должны недооценивать необходимость очистки, когда это возможно.

У кого-нибудь есть мысли, которые могли бы прояснить это?

Ответы [ 6 ]

1 голос
/ 07 января 2012

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

1 голос
/ 07 января 2012

Всегда делай это.Это займет всего несколько минут вашего времени.Там действительно нет обратной стороны.Зачем рисковать?

1 голос
/ 07 января 2012

На данный момент важны две вещи:

  • Обеспечение того, чтобы пользователь не содержал ваши данные: предотвращение SQL-инъекций

См. Документацию по SQL-инъекциям здесь:

http://php.net/manual/en/security.database.sql-injection.php

  • Проверка адреса электронной почты, чтобы убедиться, что пользователь ввел правильный адрес электронной почты

http://www.linuxjournal.com/article/9585

0 голосов
/ 07 января 2012

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

Подробнее: Проверка данных

0 голосов
/ 07 января 2012

Санитарные потребности действительно различаются в зависимости от варианта использования и типа данных.Например, вы спрашиваете у пользователя адрес электронной почты.Возможно, вам понадобится проверить, существует ли этот адрес электронной почты в вашем списке рассылки.Если вам не нужно, нет проблем.Если вам нужно избежать дубликатов, и ваша система списков рассылки не поддерживает собственную чистую дедупликацию, обычно это безопасно и рекомендуется:

  1. trim () ввод электронной почты.Начальные / конечные пробелы не являются значимыми частями электронных писем, удаление их не представляет опасности, но делает сопоставление с электронными письмами более надежным / согласованным.
  2. strtolower () ввод электронной почты.Электронные письма не чувствительны к регистру, нет никакого реального риска, и это делает сопоставление более надежным / последовательным.
0 голосов
/ 07 января 2012

Весь ввод пользователя должен быть обработан.Вы не можете доверять пользователю, предоставившему только действительные данные.Это не так, как это работает.Всегда найдется кто-нибудь, кто попытается проверить ваш код на наличие слабых мест.

Это касается и адресов электронной почты.Перед отправкой в ​​базу данных вы должны убедиться, что это действительный адрес электронной почты.

...