Проверка данных полученных от пользователя.

  • Автор темы Orlando
  • Дата начала

Orlando

Guest
Проверка данных полученных от пользователя.

Есть регистрационная форма, в которой пользователь вводит информацию о себе, пишет какие-то комментарии, то есть несколько input type=text и пару textarea.

После просмотра форума:
http://phpclub.ru/talk/showthread.php?s=&threadid=43521
и документации родилась вот такая проверка:

PHP:
    foreach($_POST as $key => $value)
    {
      $value = trim($value); //исключаем пробелы в начале и конце
      $value = strip_tags($value); //убираем все тэги
      $value = htmlspecialchars($value); //убираем кавычки и другие спец символы
      $value = nl2br($value); //для textarea добавляем переводы строки

      $_POST[$key] = $value; // записываем обратно
    }
Ну соответственно ещё будет проверка длины некоторых полей и логина на допустимые символы:
PHP:
     if (strlen($_POST["name"]) > 30)
ну и
PHP:
     if (!eregi("^[a-zA-Z0-9\-\._]+$", $_POST["login"]))

Затем все данные поступают в БД.
Потом все могут просматривать эти данные.

Собственно вопрос: являются ли данные меры гарантией от атак типа SQL-инъекции и других операций, которые могут привести сайт к неподобающему виду???:confused:

Что я ещё мог упустить для того чтобы обезопасить от распространённых атак.
 

ForJest

- свежая кровь
Неустаревающая статья, гениальная:
http://detail.phpclub.ru/article/2003-12-01

-~{}~ 03.08.05 10:46:

против SQL иньекций тебе поможет
[m]mysql_escape_string[/m]. А вообще - почитай материалы на тему SQL иньекций - найди в яндексе, их должно быть довольно много.
 

Orlando

Guest
Ну хорошо это то понятно, но есть ли недостатки в приведенном мной коде??

И ещё: а есть ли разница между mysql_escape_string и htmlspecialchars. Может стоит в моём коде вместо htmlspecialchars поставить mysql_escape_string.

-~{}~ 03.08.05 12:06:

>Неустаревающая статья, гениальная:
>http://detail.phpclub.ru/article/2003-12-01

Лучше вместо strlen() буду использовать substr(), так как есть параметр maxlength в input. Таким образом если данные поступили не из моих форм то они по длине просто обрубятся.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
http://php.com.ua/ru/articles/security/sql_injection.htm
 
Сверху