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