Видеоуроки по PHP без категории
Не так давно на мой сайт http://simple-training.com была совершена хакерская атака.Негативных последствий она не принесла и ничего серьезного она из себя не представляла,
но факт атаки заставил меня пересмотреть и оптимизировать код.
В данном видео я покажу вам каким образом сайт пытались взломать, расскажу ошибки хакера и мои ошибки. И самое главное расскажу и покажу какие уроки вы можете извлечь для себя, чтобы обезопасить создаваемые вами сайты.
Ответы на некоторые вопросы о защите.
Как защититься?
Фильтровать все входящие данные. Примите за правило следующее - Все данные приходящие из вне - потенциально опасные и должны быть проверены.Как производится фильтрование данных.
Если вы программируете на базе какого-то фреймворка, то принимать данные лучше средствами фреймворка.
То есть можно принять данные базовыми средствами PHP
$_POST, $_GET, $REQUEST,
а можно методами фреймворка.
Приведу пример:
Тут мы видим что
1) POST данные мы берем средствами CI - $this->input->post('filename');
Который уже делает некоторые проверки на попытки взлома.
2) С помощью $this->security->sanitize_filename();
Проверяется имя файла на предмет обхода каталогов.
То есть смысл в том что если вы делаете сайт на базе фреймворка - используйте по максимуму его возможности по защите. Плюсы - данные методы писали профессионалы и если там находились уязвимости, то они исправлялись разработчиками фреймворка. Минусы - то что код открыт и злоумышленник может изучить код и найти уязвимости в коде.
//CodeIgniter $filename = $this->security->sanitize_filename($this->input->post('filename'));
Тут мы видим что
1) POST данные мы берем средствами CI - $this->input->post('filename');
Который уже делает некоторые проверки на попытки взлома.
2) С помощью $this->security->sanitize_filename();
Проверяется имя файла на предмет обхода каталогов.
То есть смысл в том что если вы делаете сайт на базе фреймворка - используйте по максимуму его возможности по защите. Плюсы - данные методы писали профессионалы и если там находились уязвимости, то они исправлялись разработчиками фреймворка. Минусы - то что код открыт и злоумышленник может изучить код и найти уязвимости в коде.
Валидация средствами фреймворков.
Практически у каждого современного фреймворка есть механизмы валидации данных.
Так называемые валидаторы. Они придуманы не от хорошей жизни и необходимы к использованию.
То необходимые манипуляции можно сделать средствами PHP.
Наиболее мощная и популярная функция для этого filter_var();
Вот примеры её самого простого использования.
Фильтрация данных средствами PHP.
Если фреймворк у вас самописный и в нем еще нет механизмов валидации и фильтров.То необходимые манипуляции можно сделать средствами PHP.
Наиболее мощная и популярная функция для этого filter_var();
Вот примеры её самого простого использования.
$userEmail = filter_var($_GET['user_mail'], FILTER_VALIDATE_EMAIL); $userName = filter_var($_GET['user_name'], FILTER_SANITIZE_STRING); $userAge = filter_var($_GET['user_age'], FILTER_VALIDATE_INT); $userIp = filter_var($_GET['user_ip'], FILTER_VALIDATE_IP); $userUrl = filter_var($_GET['user_url'], FILTER_VALIDATE_URL);
Более подробный рассказ смоти в видео...