Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Как защитить сайт от взлома хакерами?

Даже если Ваш сайт не несет коммерческой ценности и является, к примеру, просто онлайн-дневником он по-прежнему может стать жертвой взлома. Ну, скажем,  для организации спам-рассылки. Причем даже не факт, что будет взламываться персонально Ваш ресурс. В сети существует огромное множество скриптов просто серфящих по интернету и взламывающих сайты с типичными «дырами» в безопасности.

Основные приемы защиты сайта от взлома

  1. Регулярно обновляйте используемое Вами ПО. Причем это касается не только CMS на которой функционирует сайт, а и версии браузера с которой его администрируют, и версии антивирусного ПО стоящей на компьютере администратора сайта.
  2. Используйте параметризованные SQL запросы. Один из распространенных видов хакерской атаки в сети это SQL-инъекции. Он заключается в том, что варьируя параметры URL строки можно управлять данными, из БД сайта. Рассмотрим как хакер может добавить дополнительный SQL запрос. Имеется код запроса:
    "SELECT * FROM table WHERE column = '" + parameter + "';"
    Выполним замену URL параметра на ‘ OR ’1′ = ’1 и получаем на ровном месте дополнительный запрос к БД.
    "SELECT * FROM table WHERE column = '' OR '1'='1';"
    Параметризованные запросы способны избавить вас от этой проблемы.
  3. Всегда проверяйте и удаляйте сторонние вставки в HTML коде сайта. Как пример можно рассмотреть мета-тег следующего содержания.
    <meta http-equiv="refresh" content="5;url=<?=$_GET['url']?>"></meta>
    При занесении в этот тег заместо get переменной кода
    http://localhost/?url=»><script>alert(«XSS»)</script><!-
    мы получаем… XSS–атаку (запускает вредоносный код направленный на посетителей сайта).
  4. Не давайте лишней информации в сообщениях об ошибке на сайте. Примером подобной ошибки может служить уточнение что именно введено не верно (логин или пароль) при авторизации пользователя на сайте. Зачем упрощать работу взломщику оповещая его о том, какая именно из переменных авторизации неверна? Банального оповещения о том, что введено не верно логин ИЛИ пароль более чем достаточно.
  5. Ограничивайте количество возможных отправок формы за определенный промежуток времени. Можно сделать так, чтобы в случае неверного ввода логина или пароля на сайте после трех попыток пришлось ждать пару часиков до следующих трех попыток авторизации на сайте.
  6. Ставьте проверку вводимых данных в формах. Причем проверяйте данные не только на стороне браузера, но и на стороне сервера, поскольку проверку формы на стороне клиента (в браузере) порой можно довольно просто обойти, к примеру отключив исполнение джаваскриптов.
  7. Уже устал о этом говорить везде, где только возможно, но используйте комбинированные, длинные, сложные пароли. Об этом знают или подозревают все, но вот пользуются пожалуй избранные единицы. Теперь по-порядку. Под «комбинированным» паролем я понимаю пароль состоящий из цифр и букв различных регистров. Под «длинным» пароль содержащий более 8 символов. Под «сложным» то, что это все должно быть перемешано между собой и, в идеале, не должно нести в себе смысла.
  8. Пароли на сайте должны храниться в зашифрованном виде. Способов зашифровать пароли более чем достаточно. Типичный пример в этом плане алгорим SHA. Применяя этот метод мы можем обезопасить себя от того, что хакер сумевший скачать данные паролей пользователей сможет ими воспользоваться, поскольку они будут содержаться в зашифрованном виде. Думаю Вас обрадует тот факт, что в большинстве современных CMS пароли шифруются по-умолчанию.
  9. Если у Вас есть возможность- запретите пользователям грузить файлы на сайт. Исключением не является даже  банальная смена аватара на странице пользователя, то всегда есть риск, что подгружаемый файл может содержать скрипт исполняемый на стороне сервера. И проверка файла по MIME типу ни от чего нас не спасает. Его элементарно можно подделать, а в раздел комментариев (да, его поддерживает большинство форматов картинок) можно добавить вредоносный исполняемый PHP код. Что же делать? В первую очередь запретить исполнение файла (выставляем права CHMOD 0666 ). Также в файл .htaccess можно добавить код запрещающий исполнение файлов с двойным расширением:
    deny from all
    <Files ~ "^\w+\.(gif|jpe?g|png)$">
    order deny,allow
    allow from all
    </Files>
  10. Проследите за безопасностью сервера. Если Вы используете качественный хостинг, то его администрация сама обеспечит безопасность серверной части сайта. Если же вы настраиваете его самостоятельно, то проверьте работоспособность firewall, обеспечьте доступ к 443 и 80 портам через демилитаризованную зону DMZ, используйте только защищенные методы загрузки файлов на срвер (SFTP или SSH).
  11. Пользуйтесь SSL протоколом для безопасной передачи данных в интернете. Если вы не используете защищенную передачу данных, то хакеры могут получить доступ к передаваемым Вами данным.
  12. Периодически самостоятельно проверяйте свой ресурс на наличие уязвимостей. Есть множество продуктов способных облегчить Вам данную задачу. Так, Netsparker прогонит сайт по SQL и XSS атакам, а OpenVAS и вовсе включает в себя проверку сайта на примерно 25000 различных видов уязвимостей. Жаль только, что для его использования нужно наличие соответствующего ПО и на стороне сервера.