Большинство людей в Интернете хорошие и честные. Однако,существует определенное количество людей, бороздящих просторы Интернета, кто получает удовольствие от высматривания и нахождения всевозможных дыр в безопасности. Поэтому эти несколько простых подсказок помогут вам обезопасить свой сайт в основном. Итак, очевидно, вопрос безопасности данных довольно сложен и выходит за рамки этой статьи. Однако, в этой статье будут предложены некоторые основы, применив которые, вы облегчите себе множество потенциальных проблем, которые могут позволить людям увидеть что-то, что им видеть не положено.

Директории, защищенные паролем

Если у вас на сервере есть директория, которая должна остаться приватной, несмотря на то, что людям будет трудно отгадать ее имя, то лучшим решением будет защитить папку на серверном уровне. Свыше 50% веб-сайтов работают на сервере Apache, поэтому давайте посмотрим как защитить директорию на сервере паролем.

Apache принимает конфигурационные команды посредством файла, который называется .htaccess и расположен в директории. Команды в .htaccess действуют на эту директорию и любую поддиректорию, если только определенная поддиректория не имеет своего собственного .htaccess. Для защиты директории паролем Apache также использует файл .htpasswd. Этот файл содержит имена и пароли пользователей, имеющих доступ к директории. Пароль шифруется, поэтому вы должны использовать программу htpasswd для создания паролей. Для этого просто перейдите в режим командной строки вашего сервера и введите htpasswd. Если вы получите ошибку ‘command not found (команда не найдена)’, то вам стоит связаться с вашим системным администратором. Также имейте в виду, что многие веб-хосты предлагают веб-ориентированные пути для ограничения доступа к директориям, т.е. они предлагают инструменты, которые помогут вам сделать эот самостоятельно вместо того, чтобы делать это самим. Далее…


Набираем в командной строке ‘htpasswd -c .htpasswd myusername’, где ‘myusername’ – имя пользователя, которые вы пожелаете. Затем у вас запросят пароль. Подтвердите его и файл будет создан. Вы сможете это повторно проверить через FTP. К тому же, если файл внутри вашей веб-директории, то вам стоит переместить его, чтобы он не стал доступен публично. Теперь открывайте ваш .htaccess и добавьте в него следующее:

AuthUserFile /home/www/passwd/.htpasswd
AuthGroupFile /dev/null
AuthName ‘Secure Folder’
AuthType Basic
require valid-user

В первой строке указано, где находится ваш .htpasswd. Как только вы пропишите эту строку, то при посещении директории вы увидите всплывающий диалог, который потребует от вас залогиниться, чтобы просмотреть ее.

Выключаем обзор директорий

По-умолчанию любая директория на вашем сайте, которая не содержит файла домашней страницы (index.htm, index.php, default.htm и т.д.), предоставляет посетителю возможность увидеть ее содержимое, т.е. файлы и/или папки. Возможно вы бы не хотели, чтобы люди видели, что там находится. Самый легкий путь защиты – просто создать пустой файл index.htm и выгрузить в соответствующую директорию. Другой путь, опять же, используя файл .htaccess, позволяет убрать возможность просмотра содержимого директории. Чтобы сделать это, включите строку ‘Options -Indexes’ в файл. Теперь посетители будут получать ошибку 403 вместо листинга файлов.

Удаляем инсталляционные файлы

Если вы инсталлируете программное обеспечение то обычно оно поставляется как инсталляционный скрипт и/или скрипт обновления. Оставляя эти скрипты на сервере, вы открываете огромную «дыру» в безопасности, потому что, если кто-то знаком с таким ПО, от он сможет найти и запустить ваши инсталляционные скрипты, тем самым уничтожить вашу базу данных, конфигурационные файлы и т.п. Хорошо написанный программный пакет будет предупреждать вас об удалении некоторых своих файлов перед тем как вы сможете работать с установленным продуктом. Однако, лишний раз удостоверьтесь, что скрипты действительно удалены. И, если что, удалите их с сервера самостоятельно.

Следите за обновлениями

Те, кто используют программные пакеты на своих сайтах должны постоянно следить за обновлениями оных и всякими сигналами тревоги в отношении используемого ПО. Не делая этого, вы все больше становитесь открытыми хакерам. Фактически, наиболее заметные «дыры» безопасности рассматриваются и предоставляются общественности, а также существует задержка перед тем как разработчик софта выпустит патч (заплатку) для него. Поэтому некоторые смогут воспользоваться уязвимостью, если вы не обновите свое ПО. Я сам попадал в такие нехорошие ситуации несколько раз, когда все мои форумы были уничтожены и я был вынужден восстанавливать все их резервной копии. Такое случается.

Понижаем уровень отображения ошибок

Говоря главным образом о PHP, потому что я работаю с ним, ошибки и предупреждения, генерируемые интерпретатором, по-умолчанию, печатают полную информацию в вашем броузере. Проблема в том, что обычно эти ошибки содержат полные пути к проблемным скриптам. И это, я считаю, слишком много информации для сторонних посетителей. To alleviate this, reduce the error reporting level of PHP. Вы можете сделать эот двумя путями. Один путь – корректировать файл php.ini. Это основной конфигурационный файл настроек PHP на вашем сервере. Обратите внимание на директивы error_reporting и display_errors. Если же вы не имеете доступа к этому файлу (большинство общедоступных хостингов запрещаеют это), от вы сможете воспользоваться PHP-функцией error_reporting(). Включите ее в глобальную часть ваших скриптов и уровень отображения ошибок будет понижен.

Защищаем формы

Формы представляют собой огромные дыры на вашем сервере для хакеров, если вы не очень корректно их создаете и обрабатываете. Так как эти формы обычно передают что-то на сервер, а иногда даже получают доступ к вашей базе данных, то та форма, которая не достаточно защищена, может предложить хакеру чуть ли не прямой доступ к чему угодно. Имейте это в виду…просто потому что у вас на форме есть поле и оно называется ‘Адрес’, это не значит, что вы можете доверять людям, которые будут вводить адрес в эот поле. Представьте, что вы неправильно запрограммировали форму и скрипт отослал ее неизвестно куда. Что может остановить хакера от ввода SQL-запроса или программного кода в поле адреса? Принимая это все во внимание, приведу некоторые вещи, которые нужно контролировать:

Используйте ограничение размера полей ввода. Поля ввода в HTML-форме могут использовать атрибут MAXLENGTH для ограничения длины вводимой информации. Используйте это, чтобы удержать людей от ввода слишком большого количества информации. Это останавливает многих людей. Может остановить и хакера.

Прячьте адреса электронной почты, если вы используете скрипт типа «форма-почта». Не вставляйтся адрес электронной почты в саму форму. Просто этим могут воспользоваться спам-спайдеры.

Используйте проверки на валидность формы. Я бы не хотел вдаваться в подробности программирования здесь, но любой скрипт, который будет сабмитить форму должен прежде всего проверять входнеы данные. Удостоверьтесь, что поля получили именно ту информацию, которая ожидается. Проверяйте, чтобы вводимые данные были обоснованными и ожидаемого размера, а также имели подходящий формат, например, адреса электронной почты, номера телефонов, почтовын индексы и т.д.).

Избегайте SQL-инжекции. Полный урок по SQL-инжекции мы оставим для следующей статьи, однако самое основное это то, чтобы не позволить ввести в форму прямой SQL-запрос без предварительной проверики, дабы не дать хакеру возможность выполнять этот запрос через вашу форму. Для предотвращения этого всегда контролируйте тип вводимых данных (числа, строки т.д.), используйте адекватные проверки и записывайте запросы так, чтобы хакер не смог ничего добавить в нему.

Заключение

Безопасность вебсайта довольно объемный предмет и включает НАМНОГО больше того, что описано здесь. Однако, я просто показал вам небольшой пример тех нетрудных вещей, которые вы можете делать сами на своем сайте, чтобы оградить его от большинства посягательств.

Автор статьи: Дэвид Рисли Тейлор (David Risley)
веб-разработчик и основатель PC Media, Inc. Специализист в области PHP/MySQL, консалтинге и интернет-менеджменту. Он также основатель PC Mechanic.
Перевод: Bambino


Вы прочитали статью и она Вам понравилась?
Подпишитесь на обновления!

Pаспечатать эту статью Pаспечатать эту статью