Одной из важнейших задач встающих перед начинающим разработчиком php является защита от взлома кода. Взломать конечно можно по разному, но в большинстве случаев взлом происходит из-за невнимтельности(читайте усталости, ваш покорный слуга круглыми ночами в свое время занимался разработкой проектов в следствии чего под утро писал такой код что на след…вечер было самому страшно смотреть) программиста ...
Одной из важнейших задач встающих перед начинающим разработчиком php является защита от взлома кода. Взломать конечно можно по разному, но в большинстве случаев взлом происходит из-за невнимтельности(читайте усталости, ваш покорный слуга круглыми ночами в свое время занимался разработкой проектов в следствии чего под утро писал такой код что на след…вечер было самому страшно смотреть) программиста. Важнейшее правило-фильтруйте любые приходящие от клиента. Будь то e-mail, обычный текс, число, браузер, или даже IP. С числовыми данными все просто. Для того чтобы быть точно уверенным что число “не грязное” надо всего лишь четко задать тип данных в переменно-int или привести ее к целочисленному значению (intval). Приведу небольшой пример:
<?php
$var = $_GET['var'];
// Из глобального массива гет получаем элемент. Если считаем что это должно быть число - фильтруем.
$var = (int)$var;
// Теперь точно тип integer и никакой бяки)
?>
Ну с числами вроде все понятно. Как же фильтровать текстовые данные? я видел много различных способов защиты от разных ухищрений приведу сейчас самый распространенный, который защищает исключительно от MySQL иньекций. (MySQL иньекция это выполнение запроса в БД с данными или параметрами которые могут помочь получить злоумышленнику какую-либо закрытую информацию или обновить данные в БД. О базах данных подробнее опишу позднее.) Вот пример чтобы сразу было ясно.
Функция mysql_real_escape_string экранирует все спецсимволы MySQL в строке. (Надо заметить что чтобы не было двойного экранирования нужно чтобы были отключены magiq quotes на сервере) Ну, а htmlspecialchars просто превращает символы ‘<','>‘,’&',’”‘ в html сущности (чтобы потом при выводе страницы не заморачиваться с фильтрацией данных). Вот так вот) И не блондинки вам на сайт и не хакера)