Войти на сайт ( )
[Вход] [Регистрация]
Компьютеры » Программирование » Защита сайта [DemidRoLL]
[Обновить]
[ Ответить ]
[Добавить в закладки]
Страница: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Gaist-Endruy ( off )
( 10:03 12-04-2009 )
Эти два свойства класса объявлены статическими для того, что бы иметь к ним доступ из любого места нашего приложения, и при этом гарантировать неизменность находящихся в них данных. Напомню, статические члены класса не нужно создавать вызывая конструктор класса (new) и они доступны в любом месте приложения (некий аналог суперглобальных массивов).

Gaist-Endruy ( off )
( 10:03 12-04-2009 )
Теперь давайте возьмемся за методы класса. Их тоже будет два по числу наших массивов.

Gaist-Endruy ( off )
( 10:03 12-04-2009 )
<?php

final class protection {

static public $$_get;

static public $$_post


static public post_decode(){

}

static public get_decode(){

}

}

?>

Gaist-Endruy ( off )
( 10:04 12-04-2009 )
Методы у нас опять же статические. Специально для того, что бы избежать вызова конструктора класса.

Gaist-Endruy ( off )
( 10:04 12-04-2009 )
Посмотрим внимательно на информацию, передаваемую методом GET. Выглядит передача информации следующим образом - ?name=namemode=1.... и так далее. То есть данный массив представляет собой простой набор пар ключ-значение. Значит, мы можем обойти массив, перенося данные в другой массив и при этом проверяя данные...

Gaist-Endruy ( off )
( 10:05 12-04-2009 )
static public get_decode(){

foreach($$_GET as $$key=>$$value){

$$key=htmlspecialchars($$key);

if(is_string($$value)){

$$value=htmlspecialchars($$value);

self::$$_get[$$key]=$$value;

}elseif(is_int($$value)){

$$value=(int)$$value;

self::$$_get[$$key]=$$value;

}

}

$$_GET=array();

}

Gaist-Endruy ( off )
( 10:05 12-04-2009 )
В данном случае, для примера, защита данных была осуществлена функцией htmlspecialchars(), которая преобразует все символы способные причинить вред приложению в их символьное представление. В подавляющем большинстве случаев этого вполне достаточно. Но естественно, в случае, когда необходима более надежная защита, используйте регулярное выражение или комбинацию из нескольких защитных функций.

Gaist-Endruy ( off )
( 10:06 12-04-2009 )
Поверте, безопасность стоит потраченных на проверку данных ресурсов системы. Обратите внимание, в конце функции мы заполнили массив GET пустым массивом. Попросту говоря, стерли его. Сделали мы это для того, что бы если по каким-то причинам (например, забыли, или подключили старый код...) мы случайно обратимся к этому массиву, не отфильтрованные данные все равно не попадут в наше приложение.

Gaist-Endruy ( off )
( 10:07 12-04-2009 )
Теперь посмотрим на проверку массива данных POST. Этот массив гораздо сложнее. Теоретически, это многомерный массив с неограниченной вложенностью. На практике мне никогда не приходилось сталкиваться с необходимостью передавать методом post более чем двух мерные массивы данных. И если такое придется делать Вам, то наверное стоит задуматься над вопросом, как можно упростить приложение.

Gaist-Endruy ( off )
( 10:07 12-04-2009 )
Итак: Примем допущение, что массив будет самое большее двухмерным. И попробуем реализовать функцию проверки массива.

Далее »
« Назад
Страница: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
[ Ответить ]
[Обновить]
[Добавить в закладки]
Компьютеры » Программирование » Защита сайта [DemidRoLL]
На главную
© c.sasisa.me