Просмотр поста

.
L!MP

1. Инициализация

Перемменные в скрипте должны быть явно инициализированы. Это во первых - правильно с точки зрения самого PHP (ибо не инициализированные переменные вызывают ошибки), во вторых - обезопасит вас от передачи парамметров внутренним переменным из вне (возможно при register_globals on).

Пример:

$error = array(); //инициализируем переменную
$error[] = 'Значение';


2. Типизация

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

Пример:

$integer = (int) $_GET['var']; //ожидается целочисленное значение
$float = (float) $_GET['var']; //ожидается дробное значение


3. Фильтрация

На вводе данных, необходимо фильтровать потенциально опасные символы, которые могут послужить в sql-иньекциях и модификация ваших sql-запросов.

Пример:

mysql_query("INSERT INTO table SET
var = '". mysql_real_escape_string($_POST['value']) .'";");


Данные на выводе необходимо фильтровать от XSS атак, которые посредством внедрения зловредных кодов, выполняющихся на машине клиента, могут воровать его информацию (куки, идентификаторы сессий и т.д).


Пример:

htmlentities($_GET['value'], ENT_QUOTES, 'UTF-8');


З.Ы: надеюсь это уменьшит кол-во вопросов.
З.З.Ы: некоторые нюансы все таки не успел описать, ибо тороплюсь с работы , думаю знающие люди дополнят.