Защита от злоумышленника фильтр данных (Рейтинг: +13)

Печать / RSS
Одной из важнейших задач встающих перед начинающим разработчиком php является защита от взлома кода. Взломать конечно можно по разному, но в большинстве случаев взлом происходит из-за невнимтельности(читайте усталости, ваш покорный слуга круглыми ночами в свое время занимался разработкой проектов в следствии чего под утро писал такой код что на след…вечер было самому страшно смотреть) программиста. Важнейшее правило-фильтруйте любые приходящие от клиента. Будь то e-mail, обычный текс, число, браузер, или даже IP. С числовыми данными все просто. Для того чтобы быть точно уверенным что число “не грязное” надо всего лишь четко задать тип данных в переменно-int или привести ее к целочисленному значению (intval). Приведу небольшой пример:

<?php
$var = $_GET['var'];
// Из глобального массива гет получаем элемент. Если считаем что это должно быть число - фильтруем.
$var = (int)$var;
// Теперь точно тип integer и никакой бяки)
?>

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

<?php
$var = mysql_real_escape_string(htmlspecialchars($_GET['var']));
?>

Функция mysql_real_escape_string экранирует все спецсимволы MySQL в строке. (Надо заметить что чтобы не было двойного экранирования нужно чтобы были отключены magiq quotes на сервере) Ну, а htmlspecialchars просто превращает символы ‘<','>‘,’&',’”‘ в html сущности (чтобы потом при выводе страницы не заморачиваться с фильтрацией данных). Вот так вот) И не блондинки вам на сайт и не хакера)
Автор: Гость (10.05.10 / 17:01)
Безопасность, Mysql-иньекции, PHP
Рейтинг: +13
Просмотры: 1379
Комментарии (9) »