- Что такое ssl
- Блокировка доступа пользователей по ip
- Выбираем главное зеркало
- Другие возможности
- Запрет доступа к конкретному файлу
- Запрет доступа ко всем файлам с конкретным расширением
- Защита папок сайта паролем
- Защита сайта от атак
- Защита сайта от кражи изображений
- И еще несколько советов по работе с .htaccess
- Изменение главной (индексной) страницы сайта
- Изменение кодировки сайта через .htaccess
- Изменение страниц ошибок с помощью .htaccess
- Использование .htaccess на виртуальном или выделенном сервере
- Использование на хостинге файла .htaccess
- Как включить ssl в virtuemart
- Как настроить .htaccess для автоперевода сайта на
- Как получить ssl-сертификат
- Какой сертификат выбрать физическому и юридическому лицу
- Когда нужно покупать несколько сертификатов
- Контроль доступа
- Механизм перенаправления (редиректа) запросов
- Модуль перенаправления mod_rewrite
- Настройка 301 редиректа в htaccess
- Настройки безопасности сайта через файл .htaccess
- Перенаправление страницы на другой адрес (url)
- Работа с ошибками веб-сервера
- Распаковываем и устанавливаем ssl-сертификат на сайт
- Сколько сертификатов покупать
- Управление настройками сжатия
- Управление режимами работы сайта с помощью .htaccess
- Частые проблемы при переходе на ssl-сертификат и их решение
Что такое ssl
Здесь все просто. SSL – специальный протокол криптографического типа (проще говоря, с поддержкой шифрования передаваемых данных), обеспечивающий высокий уровень безопасности передачи данных от пользователя к сайту. Дополнительная безопасность передачи данных обеспечивается при помощи аутентификационных кодов, асимметричного криптографического протокола и задействования симметричного шифрования.
Блокировка доступа пользователей по ip
Применяется с целью защиты от:
- спамеров;
- нежелательный посетителей.
Изредка используется для предотвращения хакерских атак и помогает при защите сайта от DDoS-атаки (большого количества запросов, отправляемых с одного IP-адреса).
Синтаксис .htaccess для блокировки следующий:
allow from all
#Список нежелательных IP адресов
deny from 164.186.15.116
deny from 124.153.34.144
Выбираем главное зеркало
В используемой CMS открываем настройки сайта. Например, настройки сайта на WordPress выглядят так:
Другие возможности
– Определить индексный файл сайта:
По умолчанию индексной страницей считается index.html. С помощью следующей директивы можно задать другое название файла, который отрывается первым при обращении к каталогу:
DirectoryIndex index.php
– Полезной директивой является FilesMatch, которая оговаривает пределы действия правила по названию файла, используя регулярные выражения. С ее помощью, например, можно запретить доступ к определенным файлам:
Есть некоторые директивы, которые не поддерживаются на наших серверах с виртуальным хостингом, но вы можете их разрешить на своем ВПС.
Причина в том, что работающий как suPHP веб-сервер не поддерживает php_flag и php_value. Поэтому мы предлагаем использовать сPanel (крайне полезен подраздел “Выбор версии РНР”, для работы с error_log – “Журнал ошибок”) или создать локальный файл php.ini для этой цели. Пару директив мы все-таки привели ниже:
– Для того, чтобы избежать зависания веб-сервера при обработке некорректно написанных скриптов, существует max_execution_time. С ее помощью указывается время в секундах, отведенное на обработку РНР-скрипта. Можно увеличить время ожидания веб-сервера при выполнении скрипта:
php_value max_execution_time 60
– Определить максимальный размер загружаемого файла:
php_value upload_max_filesize 128M (здесь вместо 128 поставьте нужное значение).
– Вывести ошибки РНР в отдельный файл:
php_flag log_errors on php_value error_log /home/path/to/public_html/domain/PHP_errors.log # PHP_errors.log — название файла, а # /home/path/to/public_html/domain — путь к нему).
P.S. На виртуальном хостинге трудно с точностью определить, какие директивы будут работать в .htaccess, потому что многие из тех, которые ведут к изменению конфигурации веб-сервера, запрещены по понятным причинам — эти изменения затронут всех пользователей на носителе.
Запрет доступа к конкретному файлу
Чтобы запретить доступ к конкретному файлу на сайте, используйте следующие команды .htaccess:
Защищает файл myfile.txt
<files myfile.txt>
order allow,deny
deny from all
</files>
Запрет доступа ко всем файлам с конкретным расширением
Если необходимо запретить доступ ко всем файлам с определенным расширением (типом), то применяйте следующий набор команд:
В данном примере запрещается доступ ко всем файлам с расширением .txt
Защита папок сайта паролем
.htaccess предоставляет возможность закрыть сайт или определенную папку сайта от доступа посетителей с помощью пароля. Это полезно, например, для ограничения доступа к панели администратора сайта.
Синтаксис для .htaccess:
Защита сайта от атак
#Включает отслеживание сим-ссылок
Options FollowSymLinks
#Запускает url_rewriting
RewriteEngine On
#Блокирует все ссылки, содержащие <script>
RewriteCond %{QUERY_STRING} (<|) [NC,OR]
#Блокирует все скрипты, которые пытаются изменить переменные PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
#Блокирует все скрипты, которые пытаются изменить переменную _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
#Перенаправляет все подобные попытки на страницу с ошибкой 403 – запрещено
RewriteRule ^(.*)$ /403.html [F,L]
Эти фильтры могут быть дополнены, в зависимости от используемой CMS.
Web-сервер Apache с такой настройкой .htaccess начинает работать как программное обеспечение с функционалом Web Application Firewall (WAF).
Такая фильтрация не служит 100% гарантией защиты сайта, но в качестве одного из компонентов безопасности весьма полезна.
Защита сайта от кражи изображений
Защита авторского контента в Интернете – актуальная задача. При желании любой недобросовестный пользователь легко может узнать адреса понравившихся ему графических файлов, используемых на конкретном сайте, и вставить их в код страниц своего сайта.
Для защиты от подобной кражи контента можно использовать такой код в .htaccess:
И еще несколько советов по работе с .htaccess
Крайне желательно перед любым редактированием делать резервную копию файла – чтобы при худшем исходе можно было «откатить» изменения обратно.
Рекомендуем вносить изменения пошагово, используя минимум директив – и в случае неудачи будет легче вычислить, какое именно правило вызвало ошибку.
Хотя изменения и сразу вступают в силу, кэш браузера никто не отменял. Для проверки работы сайта после редактирования .htaccess регулярно пользуйтесь его очисткой или загружайте страницу в обход кэша — через комбинацию клавиш Ctrl F5 (в Safari: Ctrl R, в Mac OS: Cmd R).
Самая распространенная ошибка веб-сервера при работе с .htaccess — 500. Она указывает на проблему в синтаксисе (опечатка в директиве, например), либо же в главном конфигурационном файле не разрешен такой тип директивы.
Изменение главной (индексной) страницы сайта
При открытии сайта в браузере автоматически загружается страница index.html или index.php. Чтобы изменить эту настройку на использование индексного файла с названием, например, about.html, используется следующая команда в .htaccess:
DirectoryIndex about.html
Изменение кодировки сайта через .htaccess
Точное указание кодировки страниц сайта важно для сайтов с контентом на других языках (не на английском). Чтобы браузер пользователя правильно отобразил содержимое страниц, в файле .htaccess указывается, в какой кодировке они созданы.
В настоящее время для web-сайтов наиболее часто используется универсальная кодировка UTF-8, но встречаются страницы, созданные на кириллических кодировках Windows-1251 или KOI8-r.
Обычно кодировку указывают в метатегах заголовка HTML-кода страницы:
Изменение страниц ошибок с помощью .htaccess
Если web-сервер не находит нужный файл (страницу) при запросе к сайту по определенному адресу, то он отвечает специальной ошибкой 404. Используемая по умолчанию страница с ошибкой 404 малоинформативна.
То же происходит в случае ошибок 400 (неправильный запрос), 500 (ошибка сервера) и других распространенных ошибочных состояний web-сервера.
Чтобы у пользователя было больше информации, можно настроить свои собственные страницы для обработки ошибок web-сервера с возможностью навигации по сайту. На странице может быть указано, что человек перешел по несуществующей ссылке, и предложение поискать нужную информацию на сайте, а не уйти с него.
Например, на сайте my-sertif.ru используется такая страница обработки ошибки 404.
Чтобы показывать пользователям сайта специальные страницы ошибок (404 и других) вместо стандартных, нужно создать файл для этой страницы (например, /404.html, /500.html) и добавить соответствующий код в файл .htaccess:
Использование .htaccess на виртуальном или выделенном сервере
При использовании услуги собственного VPS/VDS или выделенного сервера у вас есть полный доступ к изменению настроек web-сервера Apache с помощью редактирования его основных конфигурационных файлов. При этом применение файлов .htaccess также остается удобной возможностью для внесения корректив в работу сервера без перезагрузки.
Для редактирования файлов .htaccess из командной строки сервера используйте текстовые редакторы vi, nano, mcedit.
Схема работы .htaccess
Использование на хостинге файла .htaccess
Название файла .htaccess (сокращение от “hypertext access”) начинается с точки. Это означает, что файл – служебный и не относится непосредственно к файлам сайта, а используется для настроек web-сервера, является частью конфигурации web-сервера Apache.
Как включить ssl в virtuemart
Для того, чтобы включить SSL в VirtueMart — перейдите в ViryueMart | Конфигурация и на вкладке «Мгазин» отметьте галочкой пункт Включить SSL.
Как настроить .htaccess для автоперевода сайта на
Добавил на сайт SSL-сертификат. Теперь нужно, чтобы любое обращение к сайту по http: автоматически переводилось на https:
Подскажите каким образом нужно изменить такой .htaccess, чтобы получить нужное поведение:
AddDefaultCharset UTF-8
ErrorDocument 404 /index.php?page=404
RewriteEngine On
RewriteCond %{HTTP_HOST} ^somedomain.ru
RewriteRule ^(.*)$ http://www.somedomain.ru/$1 [R=301,L]
RewriteBase /
# RewriteRule ^index.php$ / [R=301,L]
RewriteRule ^test/(x. /)?$ index.php?page=test [L]
RewriteRule ^test/create/((de|es)/)?$ index.php?page=create&lang=$2 [L]
RewriteRule ^test/create/(([0-9A-Fa-f] )/)?$ index.php?page=create&token=$2 [L]
RewriteRule ^test/([^/] )/$ index.php?page=test&act=$1 [L]
RewriteRule ^test/replay/([0-9A-Za-z] )/$ index.php?page=test&replay=$1 [L]
только изменение строки:
RewriteRule ^(.*)$ http://www.somedomain.ru/$1 [R=301,L]
на:
RewriteRule ^(.*)$ https://www.somedomain.ru/$1 [R=301,L]
дает желаемое поведение не во всех случаях.
UPD: обновил .htaccess до варианта 9 из ответа @Alex:
AddDefaultCharset UTF-8
ErrorDocument 404 /index.php?page=404
RewriteEngine On
# https://masterhost.ru/support/doc/apache/#http2https
RewriteCond %{HTTP:PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# https://masterhost.ru/support/doc/apache/#redirect
RewriteCond %{HTTP_HOST} ^somedomain.ru
RewriteRule ^(.*)$ https://www.somedomain.ru/$1 [R=301,L]
# старый вариант переадресации на www.
#RewriteCond %{HTTP_HOST} ^somedomain.ru
#RewriteRule ^(.*)$ http://www.somedomain.ru/$1 [R=301,L]
RewriteBase /
# RewriteRule ^index.php$ / [R=301,L]
RewriteRule ^test/(x. /)?$ index.php?page=test [L]
RewriteRule ^test/create/((de|es)/)?$ index.php?page=create&lang=$2 [L]
RewriteRule ^test/create/(([0-9A-Fa-f] )/)?$ index.php?page=create&token=$2 [L]
RewriteRule ^test/([^/] )/$ index.php?page=test&act=$1 [L]
RewriteRule ^test/replay/([0-9A-Za-z] )/$ index.php?page=test&replay=$1 [L]
… работает.
Как получить ssl-сертификат
Чтобы начать переезд на защищенное соединение, необходимо приобрести так называемый SSL-сертификат. Свяжитесь со своим хостингом-провайдером – сегодня большинство из них предлагают сертификаты.
Можно также самостоятельно найти бесплатный сертификат или купить профессиональный вариант SSL.
Покупать необходимо такой SSL, который работает для всех страниц сайта, в том числе для второстепенных, а не только для главной. В противном случае пользователь, переходящий по страницам сайта, постоянно будет получать сообщения от браузера о том, что он открывает не защищенную страницу.
Какой сертификат выбрать физическому и юридическому лицу
Если сайт посвящен вашему хобби и не является коммерческим, а домен зарегистрирован на физическое лицо, вы можете установить абсолютно любой, даже платный сертификат.
Сайты коммерческих компаний, которые хотят повысить доверие в глазах Google и «Яндекса», должны использовать OV- или EV-сертификаты.
OV-сертификат получить могут только юридические лица после прохождения идентификациии.
ЕV-cертификат похож на OV-сертификат, но для получения EV-сертификата компании придется пройти расширенную валидацию (проверку всех сведений и данных). Сайты, получившие EV-сертификат, получают зеленую полосу чуть правее иконки замка, а также там выводится полное наименование компании и данные о ней.
OV-сертификат и ЕV-cертификат могут получить только официальные организации с историей. При этом сертифицирующий центр проверяет не только данные о компании на сайте, включая адрес и телефон, но и права на домен. Разница в стоимости этих SSL-подписей минимальная. Если компания крупная и планирует расширяться, лучше выбирать EV-сертификат.
Сотрудники Google говорят, что именно OV- или EV-сертификат гарантирует компаниям и другим коммерческим предприятиям приоритетные позиции в поисковой выдаче. Оба вида сертификатов стоят дороже, чем простые платные SSL-сертификаты.
- Сертификат типа OV – от 8 тыс. р. за год;
- сертификат типа EV – от 10 тыс. р. за год;
- сертификат типа Wildcard – от 18 тыс. р. за год.
Когда нужно покупать несколько сертификатов
Сайт может иметь несколько версий для разных регионов / стран / городов. На практике это выглядит следующим образом:
Если вышеуказанные субстраницы есть на вашем сайте, то необходимо выбирать WildCard – это сертификат открытого ключа, который предназначен для использования сразу с несколькими поддоменами, обычно – с поддоменами третьего уровня.
Некоторые сертификаты выдаются сразу на несколько доменов (например, такую возможно поддерживает LE он же Let’s Encrypt).
Несколько сертификатов придется купить, если у компании более одной обновляемой версии сайта. В последнем случае лучше выбирать сертификаты типа SAN или мультидоменные SSL-сертификаты.
SAN-сертификат подтверждает домены по списку, который указывается в момент получения SSL-сертификата.
Мультидоменные SSL-сертификаты – это сертификаты, которые позволяют расширять число доменов при необходимости. Multi Domain SSL-сертификаты требуются серьезным компаниям, так как позволяют валидировать адреса домена и защитить несколько дополнительных доменных имен.
Контроль доступа
Запрет веб-доступа:
Order Deny,Allow Deny from all
Запрет веб-доступа, кроме IP:
order deny,allow deny from all allow from xxx.xxx.xxx.xxx
Запрет веб-доступа для IP:
Order allow,deny Allow from all Deny from xxx.xxx.xxx.xxx
Запрет доступа к файлу:
Защита директории с помощью пароля:
Механизм перенаправления (редиректа) запросов
Модуль перенаправления и перезаписи запросов (mod_rewrite) в Apache используется для управления обработкой запросов к web-серверу. Правила обработки запросов почти всегда различаются, в зависимости от конкретных сайтов и папок, поэтому использование .htaccess – это идеальный вариант для их настройки.
Чтобы включить работу перенаправления запросов, укажите в .htaccess команду:
RewriteEngine on
Затем следует перечень специальных команд для настройки перенаправления, в зависимости от конкретных условий.
Команду “RewriteEngine on” в файле .htaccess достаточно использовать лишь один раз.
В своей работе механизм перенаправления mod_rewrite применяет специальную технологию программирования regexp для сравнения запросов с определенным шаблоном.
Модуль перенаправления mod_rewrite
Незаменимым механизмом для изменения URL-ссылок “на лету” является модуль mod_rewrite. Его полезность, а вместе с тем, сложность заключается в том, что можно использовать несметное количество правил, включающих еще больше переменных.
Для работы модуля, прежде всего, нужны директивы:
RewriteEngine On (включает работу механизма преобразования)
Options FollowSymLinks (условие для работы mod_rewrite).
Если администратор сервера отключил данную опцию для директории пользователя, то невозможно использовать механизм преобразования. Такое ограничение накладывается на серверах виртуального хостинга в целях безопасности.
Для дальнейшего ознакомления с модулем рекомендуем обратиться к первоисточнику.
RewriteRule
Одной из самых функциональных директив модуля mod_rewrite является RewriteRule. Для того чтобы указать условие, при котором будет работать правило, используется директива RewriteCond. Она (одна или несколько) обязательно прописывается перед RewriteRule.
Перенаправление страницы на новый домен:
Настройка 301 редиректа в htaccess
Для создания постоянного перенаправления используется директива 301 редиректа, которая передает весь вес страницы на новый URL (поэтому оно предпочтительней, чем 302 редирект — в целях SEO).
Перенаправление всего сайта на новый домен:
Настройки безопасности сайта через файл .htaccess
Файл .htaccess предоставляет возможность фильтрации определенных запросов для обеспечения безопасной работы сайта. Ниже перечислены наиболее популярные из подобных фильтров для .htaccess:
Перенаправление страницы на другой адрес (url)
Чтобы перенаправить всех посетителей определенной страницы сайта на другую, настройте в .htaccess специальную директиву Apache “Redirect”:
Работа с ошибками веб-сервера
Иногда вместо ожидаемой страницы посетитель может натолкнуться на ответ веб-сервера в виде ошибки с лаконичным, но не всегда понятным для простого пользователя объяснением причины. Полный список кодов состояния можно найти в Википедии. Для самых распространенных (ошибка 404 и ошибка 500) желательно создать свою страницу, которая лучше смотрится и представляет посетителю пути выхода. Задается она следующим образом:
Распаковываем и устанавливаем ssl-сертификат на сайт
Теперь нужно установить сертификат на свой сайт. Проще всего сделать это, воспользовавшись услугами хостера. Например, я пользуюсь хостингом Beget. Здесь установить SSL-сертификат можно так:
Сколько сертификатов покупать
Если у вас блог, небольшой интернет-магазин или даже полноценный портал, рассчитанный на крупную аудиторию, достаточно будет одного SSL-сертификата, но при условии, что корректно настроено перенаправление со всех зеркал на главное.
Управление настройками сжатия
Включение сжатия со стороны сервера позволяет браузеру посетителя и серверу согласовать компрессию информации перед тем, как она будет отправлена пользователю. В итоге скорость загрузки страницы увеличится, а потребление сетевых ресурсов снизится за счет небольшого увеличения нагрузки на web-сервер.
Чтобы включить Gzip-сжатие в файл .htaccess, в зависимости от настроек используемого хостинга, нужно добавить следующие команды:
или
Какой именно вариант лучше использовать на конкретном хостинге, можно проверить, сравнив скорость загрузки сайта при разных настройках.
Управление режимами работы сайта с помощью .htaccess
С помощью .htaccess можно управлять такими параметрами работы сайтов:
- кодировка;
- сжатие;
- кэширование.
Частые проблемы при переходе на ssl-сертификат и их решение
Чтобы получить возможность редактировать файл configuration.php, нужно с помощью файлового менеджера установить для него права доступа 644.
