Подкаст #7. Защита от взлома сайтов через PHP, установка пароля на папку сайта

Рубрика: Подкасты Опубликовано: 18.02.2021
Стенограмма видеозаписи:

Добрый день. Вы слушаете седьмой подкаст от дата центра MouseDC.ru. У микрофона Алексей Гуржиев.

В этом выпуске обсуждаем написание безопасного PHP кода. Рассматриваем фильтрацию данных и защиту папок сайта паролем.

Приступим.

И с самого начала обратим внимание наших пользователей хостинга, которые используют PHP версии 7.2 и ниже. У этой версии закончилась поддержка ещё в ноябре прошлого года. К счастью, разработчики переносят в неё обновления безопасности из версии 7.3, поэтому ваши сайты сейчас более-менее защищены. Но уже следует перейти на более свежую версию программного обеспечения. Это можно сделать через личный кабинет виртуального хостинга. Если появятся вопросы по изменению версии, то Вы всегда можете найти статью на нашем сайте под названием "Как поменять версию PHP на хостинге". Ссылка на статью находится в описании к видео. А если и с ней возникнут проблемы, то обязательно напишите нам в техническую поддержку. Обязательно поможем.

Если Вы не активируете свежую версию PHP, то ваш проект окажется под угрозой. Вы можете потерять данные с сайта. Либо ваш сайт будут использовать злоумышленники. Поэтому помните об обновлениях и относитесь к ним ответственно.

Почему взламывают сайты

На этом перейдём к теме программирования. А точнее рассмотрим способы защиты от различных атак на сайты. Тема может показаться сложной для неподготовленного пользователя, но если уже имеете хотя бы небольшой опыт в программировании, то сможете понять суть методов.

Сразу скажем, что далеко не все сайты можно вообще взломать. К примеру, если сайт состоит из статичной HTML страницы, то как бы хаккер ни составлял к ней запрос, какие бы данные ей ни передавал, она всегда будет выдавать одно и то же. Для удачного взлома необходимо, чтобы система умела воспринимать принимаемые данные. Причём она должна не только считывать их, но и обрабатывать, выдавая различный результат.

К примеру, если поменять расширение файла статичной страницы из ".html" в ".php" на хостинге, то устойчивость ко взлому не изменится и останется максимальной. Потому что внутри файла нет скриптов, которые обрабатывают передаваемые параметры. Но если добавить внутрь файла исполняемый программный код, который будет обрабатывать данные запроса, то сразу появится возможность взлома.

Чтобы обезопасить сайт, необходимо грамотно обеззараживать все данные, которые приходят от пользователей. К примеру, представьте что на вашем сайте есть форма для сбора телефонов и имён. Из названий этих полей можно понять, что в них должно содержаться. Поэтому для обеспечения безопасности сайта необходимо сделать два фильтра данных. Фильтр на имя пользователя будет пропускать только кириллические строчные и заглавные буквы. А второй фильтр будет пропускать только цифры.

Это примитивные, но эффективные фильтры, которые не дадут взломать ваш сайт. То есть злоумышленник не сможет отправить произвольную команду через поля формы, чтобы выполнить запрос к базе данных или исполнить код.

Для справки приведём пример PHP кода этих фильтров. В обоих случаях используется функция preg_replace, которая заменяет символы по регулярному выражению. В случае телефонного номера удаляется всё, кроме цифр от нуля до девяти. В данных имени удаляется все, кроме кириллических строчных и заглавных букв.

preg_replace('/[^0-9]/', '', 'телефон');
preg_replace('/[^А-Яа-яЁё]/', '', 'имя');

Обе функции вернут очищенный результат, который можно использовать далее: сохранять в базе и выводить в HTML на странице.

Если заинтересовались этой темой, то стоит ознакомиться со статьёй "Регулярные выражения в PHP" на нашем сайте. Ищите ссылку в описании к этому видео.

Защита папки паролем через htaccess

Другой способ защиты сайта заключается в закрытии паролем той папки, в которой находятся административные скрипты. К примеру, в системе управления сайтом WordPress это папка "/wp-admin/". Обычные посетители сайта не заходят в это папку. Поэтому они не испытают неудобств, если сделать доступ к её содержимое по паролю.

Делается подобная защита с использованием двух файлов: файла htaccess и файла с паролем. Первый файл вы размещаете в той папке, которую хотите защитить паролем. В этом файле нужно написать несколько директив:

AuthUserFile /папка_выше_корня_сайта/.htpasswd
AuthName "Authentication Required"
AuthType Basic
Require valid-user

Первой строкой записана директива "AuthUserFile", которая указывает на место, где хранится файл с паролем. Обычно такой файл называют ".htpasswd". Он должен лежать выше корня сайта, чтобы никто не смог прочитать его содержимое. Для создания файла с паролями существуют специальные генераторы. К примеру, подобный есть на нашем сайте хостинга, ссылка на него в описании.

Всю методику закрытия файлов и папок паролем мы подробно изложили в статье, ссылку на которую можно найти в описании к этому видео.

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

У микрофона был Алексей Гуржиев. До встречи в следующих выпусках.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: