PHP SQL
PHP SQL .ru
  Главная  Уроки  PHP  MySQL  jQuery  RegEx  CSS  Книги  Форум  
 Функции


  На главную

  Назад  Вперед

  Печать

Безопасность работы с формами

Формы позволяют пользователям «общаться» с вашими сценариями. Чтобы выжать максимум из РНР, вы должны знать все о формах. Первым делом вам нужно понять, что хотя РНР упрощает доступ к данным формам, вы должны быть предельно осторожными, когда будете работать с этими данными.

Соображения безопасности: не доверяйте формам

Одной из самых грубых ошибок новичков является та, что они беспрекословно доверяют данным, предоставляемым HTML-формой. Даже если у вас есть выпадающий список, позволяющий пользователю выбрать одно из трех значений, вы все равно должны проверить эти значения. Как было отмечено в главе 3, вы также можете использовать JavaScript для контроля вводимых пользователем значений.

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

Чтобы убедиться, что ваш сервер безопасен, вы должны проверять все данные, которые получают ваши сценарии.

Стратегии проверки

Существуют две стратегии проверки данных формы: черный список и белый список.

Помещение в черный список - это процесс попытки отфильтровать все плохие данные, при этом считается, что все данные формы допустимы и среди них фильтр «плохих» данных. Вообще, эта методика неэффективна. Предположим, что вы пытаетесь устранять все «плохие» символы вроде кавычек. Да, вы можете найти и удалить все кавычки, но в строке могут быть другие плохие символы, о которых вы даже не подозревали! Черный список подойдет лишь в том случае, когда вы уверены в большинстве данных, которые вы получаете.

Лучше всего считать, что все данные, которые вы получаете от формы данных, - вредоносные. Вы должны просмотреть все данные и отобрать толь-ко достоверные. Данная методика называется белым списком. Например, если строка должна состоять только из алфавитно-цифровых символов, то вы можете проверять строку на соответствие регулярному выражению A-Za-zO-9.

Рассмотрим краткий обзор данной тактики:

• Если значение должно быть числом, используйте функцию is_numeric() для проверки этого. Вы можете попытаться преобразовать значение в число с помощью функции intval ().

• Если значение должно быть массивом, используйте функцию is_array ().

• Если значение должно быть строкой, используйте is_string(). Для сведения к строке используйте strval ().

• Если значение должно быть нулевым (NULL, не путайте с 0), для проверки используйте is_null ().

• Если значение должно быть определено, используйте isset ().

Белый список целых чисел

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

if (! is_numeric($data) )   { 
// Use a default of 0. 
$data = 0;
}
Используя $data = intval ($data), вы можете преобразовать данные $data в целое значение. Эта техника называется преобразованием типов.

 
Предыдущая   На главную   Следующая          

qant   21.02.2012 в 16:41
Новые фичи PHP 5 по проверке данных:

$name= filter_input(INPUT_POST, \

Гость   21.02.2012 в 16:42
Новые фичи PHP 5 по проверке данных:

filter_input

далее см мануал.

Ваш комментарий:

'

Реклама на сайте | Обмен ссылками | Ссылки | Контакты
Добавить статью | Добавить исходник
2010-2014 © phpsql.ru