Чтобы отправленное сообщение можно было вновь увидеть, оно должно где-то сохраняться. Физически любая информация хранится на жестких дисках того сервера, на котором расположен интернет-ресурс. На одном сервере могут находиться сотни сайтов – чтобы информация всегда была доступна и не путалась, каждому сайту (форуму, блогу, чату…) отводится свой раздел.
Любой сайт имеет определенную структуру. Например, форум всегда построен на том или ином движке – то есть наборе структурных блоков, обеспечивающих его функционирование. Основу составляют многочисленные скрипты, написанные на том или ином языке – например, PHP, и отвечающие за выполнение определенных функций. Когда пользователь вписывает в форму сообщение и нажимает кнопку «Отправить», срабатывает скрипт, ответственный за отправку сообщения. В самом простом случае этот скрипт просто добавляет сообщение в базу данных – именно в ней и хранится вся информация. На практике же скрипт обычно проводит ряд проверок на безопасность отправляемого содержимого – в частности, на присутствие строк, с помощью которых хакеры пытаются отыскать и использовать различные уязвимости. В случае обнаружения такой строки скрипт обычно вырезает из нее опасные символы или заменяет их безопасными аналогами.
База данных с хранящимися в ней данными является самым ценным элементом ресурса, поэтому грамотный администратор регулярно делает ее бэкапы, то есть копии. При этом бэкап следует хранить не только на сервере, на котором расположен ресурс, но и на другом компьютере – например, домашнем. В этом случае при «падении» сервера, что иногда все-таки случается, ресурс всегда можно восстановить из его сохраненной копии.
Структурно база данных представляет собой раздел с определенным именем. Следует отметить, что для безопасности необходимо давать базе данных оригинальное имя. Зная имя базы данных и выявив наличие некоторых уязвимостей, хакеры могут попытаться вытянуть из нее важную информацию – например, логины и пароли администратора и пользователей ресурса. Для этого даже существуют специальные программы, значительно облегчающие труд взломщика. В памяти таких программ находятся сотни вариантов названий баз данных, нужное определяется путем подбора. Если правильного имени нет, то взломщика не остановит и это – имя базы данных будет подобрано посимвольно.
Так как потенциально ни одна база данных не является абсолютно защищенной, важную информацию в ней принято шифровать. В частности, пароли пользователей обычно сохраняются в виде файлов в формате md5. Например, слово «Россия» в формате md5 будет выглядеть как ea96b3a8b3295e8ce6842e9da939de0f. Расшифровать такой файл невозможно, единственный вариант взлома состоит в подборе – различные слова кодируются в md5 (есть и другие кодировки) и сравниваются с имеющейся строкой. Если пароль относительно простой, подбор осуществляется достаточно легко, поэтому рекомендуется применять сложные буквенно-цифровые пароли в разных регистрах со спецсимволами.
На практике используются несколько типовых баз данных, самой распространенной является MySQL. Используя ее, администратор ресурса может настроить параметры хранения и резервного копирования информации. Базой данных можно управлять удаленно через специальную панель.