Веб-сайт: пользователь вводит текст в поле - на что мне нужно обращать внимание? - PullRequest
1 голос
/ 06 февраля 2011

Может ли кто-нибудь дать мне список вещей, которые мне нужно остерегаться в этой ситуации? До сих пор я слышал только об SQL-инъекциях и специальных символах.

Что еще там есть, и какие профилактические меры мне нужно предпринять? Чтобы быть более конкретным, я использую AJAX с PHP в качестве моего серверного языка, а MySQL в качестве системы баз данных.

Спасибо.

Ответы [ 3 ]

1 голос
/ 06 февраля 2011

Во-первых, общение с базой данных:

Необходимо передать ввод в базу данных с помощью механизма, который предотвратит Атаки SQL-инъекций ;самый надежный механизм - всегда использовать параметризованные запросы всякий раз, когда принимаются любые вводимые пользователем данные.

Во-вторых, возвращая данные пользователю:

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

1 голос
/ 06 февраля 2011

Пользователь вводит текст в поле - на что мне нужно обращать внимание?

Абсолютно ничего!Нет проблем принять любую информацию из пользовательского ввода.

Проблема в том, что вы делаете с этим вводом.Некоторые идеи:

  1. Объединение пользовательского ввода для формирования запросов SQL может привести к SQL injection.
  2. Применение пользовательского ввода к буферам фиксированной длины может привести к buffer overflows.
  3. Отправка пользовательского ввода обратно на страницу HTML может привести к cross site scripting.
  4. Пользовательский ввод, используемый как часть выполнения команд на сервере, может привести к arbitrary command execution.
  5. ...

Видите ли, абсолютно не нужно беспокоиться о пользовательском вводе.Скорее, вам нужно убедиться, что пользовательский ввод не может быть «введен» в SQL, буфер, HTML или команды, которые вы выполняете на сервере.

Кроме того, вы должны убедиться, что пользовательский ввод действительносоответствует спецификациям типа вашего бэкэнда (т. е. люди могут легко манипулировать вашими входными данными для отправки чего-либо обратно на сервер, что может привести к генерированию исключений на бэкэнде).И наконец, пользователи могут часто манипулировать параметрами, чтобы подделать свою идентификацию, если вы плохо связываете клиентские запросы с внутренними авторизованными транзакциями.

0 голосов
/ 06 февраля 2011

Я не знаю, отвечает ли это на ваш вопрос или это тот ответ, который вы ищете, но я обычно передаю опубликованные переменные в mysql_real_escape_string, которая экранирует все специальные символы и предотвращает внедрение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...