Как защитить интернет ресурс от взлома
Сегодня важность вопросов безопасности сайтов, базы данных которых содержат важную информацию, переоценить cложно. Трудно, например, представить, что руководитель IT-отдела какого-нибудь крупного банка, на серверах которого записаны номера кредитных карт клиентов банка и другие важные данные, в состоянии спокойно спать по ночам, если ему накануне сообщили, что их сайт, который является зоной его ответственности, не имеет надежной защиты и может быть в течение часа взломан мало-мальски смышленым пареньком.
А зачастую дело так и обстоит! Более того, даже наличие защищенного специальными функциями кода сайта, ограниченной разрешениями на доступ базы данных и сотрудника с высоким окладом, отвечающего за безопасность данных, не всегда гарантируют 100% защиту. Вот для того, чтобы потом не было мучительно больно, нужно чрезвычайно тщательно организовывать систему защиты информации, как это делают брокеры forex практически всегда.
В данной статье речь пойдет о, быть может, самом распространенной технике взлома сайта — SQL-инъекции. Для начала напомним, что в основе всех без исключения современных объемных, сложных сайтов лежит база данных.
При помощи структурного языка запросов SQL осуществляется работа с данными, хранящимися в его базе данных. SQL-инъекция — это внедрение в исходный SQL-запрос некоторого постороннего кода, не портящего сам запрос, с целью получения доступа к содержащейся в БД информации.
Внедрение SQL-инъекции происходит благодаря недостаточной проверке принятых от пользователя параметров. Внедрённая SQL-инъекция позволяет атакующему запустить на выполнение произвольный запрос к БД — к примеру, прочитать данные любых таблиц, изменить, удалить или добавить какую-то информацию, прочитать и/или записать локальные файлы и выполнить произвольные команды на атакуемом сервере.
Большая часть SQL-инъекций используется в формах ввода, например, таких как регистрация пользователя, заказ товара, подписка и так далее. Однако не стоит думать, что речь идет лишь о видимых формах ввода. Зачастую для внедрения SQL-инъекции используют URL сайта. Так что, если ваш сайт совершенно не защищен от проникновения, хакер легко сможет подобрать ключи к базе данных вашего сайта и получить доступ к любой информации, которая в ней содержится, не исключая форекс обучения.
Теперь несколько слов о методах защиты сайта от SQL-инъекции:
1. Не стоит доверять данным, которые пользователь вводит в форму. Их все нужно проверять на присутствие в них вредоносного кода. Во-первых, имеет смысл ограничить, где это возможно, длину полей. К примеру, для строки с именем вполне достаточно десяти символов.
С помощью специальных функций необходимо обрабатывать все получаемые от пользователя данные. В случае использования PHP подойдёт функция Htmlspecialchars(), 0 преобразующая запрещенные html дескрипторы, а также mysql_real_escape_string(), которая экранирует слешами запрещенные символы типа ‘, ”. Можно ещё проверять тип вводимых данных, к примеру, при помощи intval() для численных значений.
2. В правах на доступ к базе данных пользователей необходимо ограничивать по максимуму. Чем меньше у пользователя прав, тем меньший вред будет нанесён при внедрении SQL-инъекции.
3. Техника внедрения SQL-инъекции состоит в угадывании взломщиком структуры ваших запросов к базе данных, в подборе им имен таблиц и столбцов этой БД и благодаря полученной информации получению доступа к данным. К примеру, пытаясь прочесть таблицу паролей вашей БД, атакующий станет подбирать имена типа pass, users, password и так далее. Поэтому, если назвать данную таблицу «aslfjsaf», то вряд ли у него получится извлечь оттуда информацию. Но такой метод слишком радикальный, поскольку из-за неинформативности имен затрудняет работу с базой и владельцу сайта.
Приведенные в этой статье способы защиты помогут обезопасить сайт от проникновения, но для реального проекта не стоит ограничиваться только ими, поскольку данная статья является ознакомительной и не ставила перед собой цели рассказывать обо всех методах и способах защиты данных.
