форум vBSupport.ru > vBSupport.ru > How-Tos, Hints & Tips > Статьи, обзоры, каталоги
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Alkain
Продвинутый
Default [FAQ] .htaccess .htpasswd
23

Не нашел полноценного гайда на форуме по написанию .htaccess и .htpasswd, при большом желании можно найти всю необходимую информацию в рунете, сдесь же приведу основные моменты.

.htaccess - это системный файл Apache-серверов, который дает возможность конфигурировать работу сервера в отдельных директориях (папках).
С помощью него можно переопределить многие директивы из файла httpd.conf (этот файл является главным конфигурационным файлом сервера Апач и его действия распространяются полностью на всех пользователей).
В случаях, когда у вас нет доступа в файлу настройки Апача, т.е. если Апач стоит не на вашей машине, а на виртуальном хостинге, именно .htaccess необходим для установки необходимых параметров (в данном примере приведу основные способы необходимой на мой взгляд защиты ваших ресурсов ).

Сам по себе .htaccess не доступен из браузера.
Точка перед htaccess обязательна!
Если вы не видите в директории .htaccess, это не значит, что его там нет. Необходимо в вашем FTP клиенте установить в настройках отображение скрытых файлов.
Если .htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех папок, где находится другой файл .htaccess (и кроме всех папок "ниже" этой папки со вторым .htaccess).
На примере это будет выглядеть так:
Допустим в корне вашего форума стоит .htaccess с редиректорм на главную страницу в случаях 404 ошибки, а в корне admincp помимо редиректа прописана необходимая авторизация для открытия страниц\файлов именно папки admincp, в свою очередь являясь дополнительной защитой для админ-панели. В пределах действия всех поддиректорий сайта будет действовать правила, указанные в .htaccess - расположенного в основной директории сайта. А в пределах директории admincp будет действовать .htaccess расположенный именно в директории admincp.


Примерная иерархия:
Директория сайта - .htaccess
------------------папка includes
----------------------------------папка в директории includes
------------------папка imagies
------------------папка vb

------------------папка admincp - .htaccess
-----------------------------------папка в директории admincp

------------------папка modcp
------------------и т.д.


Оранжевым отмечены папки, на которых влияет .htaccess расположенный в директории сайта
Сиреневым - папка admincp, на которую влияет собственный .htaccess, так же влияющий и на все подпапки в ней.



Прежде чем перейти к парктике расскажу о нюансах при прописывании настроек в .htaccess.
Самая основная проблема обычных юзеров заключается в том, что при создании данного файла конфигурауии многие не учитывают ОС, на которой стоит Апач, в результате чего даже правильно прописав все настройки в итоге выходит 500 ошибка
Это происходит из-за того, что файл записан в формате Windows, а сервер стоит на UNIX`е или наоборот.
Для смены кодировки можно использовать любой редактор, умеющий преобразовывать кодировки в UNIX-формат (т.к. большинство хостов сейчас на нем).
Подойдет для этого, например, простенькая программа Notepad++.

Для справки:
Основные ошибки при написании .htaccess:

- Ошибка 500 - Скрипт невозможно запустить (либо не верный путь в скрипте, либо формат, либо ошибка в написании скрипта).
- Ошибка 404 - Файл не найден (либо не залили запрашиваемый файл на сервер, либо не правельно прописаны права для нужного файла или для самого скрипта).
- Ошибка 403 - Отказ в доступе.
- Ошибка 401 - Необходима авторизация.

А так же о формате .htaccess:
Это системный файл, соответственно никаких txt и т.п. после названия быть не должно, ваш фтп должен определить файл как Файл "HTACCESS".


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

Правила написания скрипта:
- Строки комментарии начинаются с символа # (если вам необходимо писать о том, что "это" делает )
- Пути к файлам (директориям) указываются от корня сервера.
- Корень сервера обычно либо home, либо var.

Для упрощения поиска правельного пути, если вы его не знаете (кстати, где то в темах форума это видел, да простит меня автор, не нашел снова эту тему) нужно создать php файл в котором необходимо написать:

PHP Code:
<?php
phpinfo
(INFO_ALL);
?>
Сохранить его, и залить в необходимую вам дирректорию.
Открываем, внизу ищем графу PHP Variables, в ней ищем, опять же например, строку _SERVER["SCRIPT_FILENAME"], справа от нее будет полный путь вплоть до залитого вами php файла.
Не забудьте удалить данный файл после получения от него необходимой вам информации!

Теперь о скриптах:

Путь к файлу:
PHP Code:
DirectoryIndex /var/user4444444/www/data/www/вашсайт/вашфайл.php 
Путь к директории (без слеша в конце):
PHP Code:
DirectoryIndex /var/user4444444/www 
Если рассматривать директорию вашего сайта с переходом не на index.html, а на index.php (есть сервера, в которых необходимо прописывать php файлы в .htaccess, т.к. по умолчанию на Апаче могет стоять только thml... при таком раскладе php файлы у вас не будут автоматически запускаться, а будет кидать в директорию индекса) Для этого, а так же для защиты от индексации директоирй и поддиректорий:
PHP Code:
DirectoryIndex index.php 
Редирект с вашего старого сайта на новый:
PHP Code:
Redirect /старыйсайтhttp://новыйсайт/ 
Редирект с собственной страницы ошибок (так же можно указать редирект при ошибке доступа(ошибка 403) на указанный вами раздел, например на страницу вашего сайта):
PHP Code:
ErrorDocument 404 http://вашсайт.ru 
Включение кеширования картинок (так же туда можно добавить стили форума/сайта и скрипты):
PHP Code:
FileETag MTime Size
 
<ifmodule mod_expires.c>
 <
filesmatch ".(jpg|gif|png|jpeg)$">
 
ExpiresActive on
 ExpiresDefault 
"access plus 1 mounth"
 
</filesmatch>
 </
ifmodule
В пятой строке необходимо указать нужный вам срок кеширования (у меня стоит 1 месяц).

Вместо открытия происходит загрузка файлов:
PHP Code:
AddType application/octet-stream .rar .doc .mov .avi .pdf .xls .mp4 

Теперь относительно самой защиты:

Запрет на доступ всем:
PHP Code:
 Order Deny,Allow
Deny from all 
Запрещение доступа к указанному файлу:
PHP Code:
<Files файл.php>
Deny from all
</Files
Запрет доступа определенным юзерам по IP:
PHP Code:
Order Deny,Allow
Deny from 196.56.222.42 

Разрешение на доступ для указанного IP:
PHP Code:
 Order Deny,Allow
Deny from all
Allow from 192.168.1.1 
Запрет отображения индексового каталога при отсутствии index.php или index.html:
PHP Code:
Options -Indexes 
Запрет доступа к файлам указанных ресширений:
PHP Code:
<Files "\.(inc|conf|cfg)$">
  
Deny from all
</Files
Теперь о защите указанных вами папок паролем (на форуме было, но т.к. тут гайд, напишу еще раз - пусть все будет в одном месте ) :

Существует конфигурационный файл, позволяющий устанавливать доступ к определенным разделам сайта или форума (пароль htaccess) : .htpasswd
Создается .htpasswd точно так же, как и .htaccess, с нужным форматом, указанием верных путей и т.п.

Данный пример я буду рассматривать на защите доступа к admincp панели, допустим www.вашсайт.ru/admincp/index.php - путь админке (рекомендую поменять стандартный путь, на форуме информации достаточно).

Вам необходимо ограничить доступ к админке, для этого необходимо в .htaccess прописать следующее:

PHP Code:
DirectoryIndex index.php
Options 
-Indexes
ErrorDocument 404 http
://вашсайт.ru
ErrorDocument 403 http://вашсайт.ru
AuthName "Control panel (или любое другое название всплывающее при запросе авторизации)" 
AuthType Basic
AuthUserFile 
/var/user4444444/www/data/www/auth/pas/.htpasswd
require valid-user 
Где:
AuthUserFile - путь до файла ключей (ниже распишу о его создании) с учетом папки /auth/ и /pas/, т.е. в дальнейшем вы создадите эти папки в нужной директории(пример ниже) и закините туда ваш .htpasswd).

Безопаснее будет поместить .htpasswd на директорию выше, чем директория вашего сайта:
Пример:
Путь к директории вашего сайта:
PHP Code:
 //var/user4444444/www/data/www/вашсайт.ru/собственно сам сайт 
Файл помещаем на директорию выше, т.е. путь будет:
PHP Code:
 /var/user4444444/www/data/www/auth/pass/.htpasswd 
Теперь создаем .htpasswd:
Для создания нажимаем на .htpasswd, вбиваем там желаемый логин и пароль, нажимаем ок и видим получившиеся строки. В зависимости от типа ОС нужно выбрать нужную вам строку и перекопировать ее в созданный вами .htpasswd
.thpasswd заливаем в указанное в .htaccess место.

Все если все пути указаны верно, все будет работать
теперь при попытке зайти на admincp сначала будет необходимо авторизироваться, и только потом вводить пароль и логин к админке, даже если вы уже авторизированы на сайте\форуме.


Пример с комментариями:
PHP Code:
# Индексный файл - php, защита от индексации директорий и поддиректорий
DirectoryIndex index.php
# Если нет индекс.php - индексовая директория не показывается
Options -Indexes
#Ошибки 404 и 403 переносят вас обратно на гл. страницу форума.
ErrorDocument 404 http://вашсайт.ru
ErrorDocument 403 http://вашсайт.ru
# Авторизация, ее название
AuthName "Control panel" 
AuthType Basic
# Путь к ключу
AuthUserFile /var/user4444444/www/data/www/auth/pas/.htpasswd
require valid-user 
В данной статье были описаны самые основные моменты в написании конфигурационных файлов .htaccess, .htpasswd, а так же защита директорий с помощью .htpasswd
P.S. Не забудьте прописать необходимые права на чтение, редактирование и исполнение файлов.

Надеюсь, кому-нибудь пригодится.
Спасибо за внимание

Last edited by Alkain : 12-26-2011 at 04:26 AM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
xorex
Эксперт
vBSponsor
 
xorex's Avatar
Default
0

можно ли в фале .htaccess какнить указать апачу обрабатывать только перечисленные файлы в директории(ях) ?
 
 
Alkain
Продвинутый
Default
1

Если имеется ввиду, что необходимо дать доступ к определенным файлам с определенного айпи, то:
PHP Code:
<Files файл.php>
Order Deny,Allow
Deny from all
Allow from 192.168.1.1 
</Files
Получится, что права на доступ к файл.php будут только у юзера с ip 192.168.1.1

Так же можно сделать по другому, можно запретить доступ относительно указанных расширений:
PHP Code:
<FilesMatch "\.(conf|cfg)$">
Order Allow,Deny
Allow from all
Deny from 192.168.1.1 
</FilesMatch
На счет "в директориях", проще тогда в поддиректории или в другой создать такой же .htaccess уже с другими настройками.

Last edited by Alkain : 12-26-2011 at 02:32 AM.
 
 
Luvilla
Гость
Default

Alkain, очень хорошо
небольшое пожелание:
раз статья написана на популярном уровне, стоило бы указать
- что точка в начале является необходимостью, а не украшением
- что "если вы не видите файла .htaccess, это ещё не значит, что его там нет")

и вот это место
Quote:
Originally Posted by Alkain View Post
Редирект при указании несуществующей страницы (так же можно указать редирект при ошибке доступа(ошибка 403) на указанный вами раздел, например на страницу вашего сайта):
PHP Code:
ErrorDocument 404 http://вашсайт.ru 
не совсем корректно сформулировано
ErrorDocument, по сути, никак не редирект - это "своя" страница ошибок

Quote:
Originally Posted by Alkain View Post
Для упрощения поиска правельного пути, если вы его не знаете [...] нужно создать php файл ...
а в админке посмотреть, в phpinfo?
 
 
Sven
Front-End Developer
 
Sven's Avatar
Default
0

Alkain, И от меня пожелание.
Добавь в пост ссылки на генерацию файла .htpasswd, именно файла (Для линукса и винды)
И поправь ошибки
Quote:
Originally Posted by Alkain View Post
В правом верхнем углу форума (vbsupport.ru) тыкаем на .thpasswd, вбиваем там желаемый логин и пароль, нажимаем ок и видим получившиеся строки. В зависимости от типа ОС нужно выбрать нужную вам строку и перекопировать ее в созданный вами .htpasswd
.thpasswd заливаем в указанное в .thaccess место.
Видимо быстро печатал

Sven добавил 26.12.2011 в 00:53
От себя добавлю. Папку с файлом .htpasswd стоит размещать в директории выше сайта, покажу на твоем примере.
По пути /var/www/data/www/вашсайт.ru нам откроется сайт, так вот файл стоит размещать тут /var/www/data/www/auth

Это грубый пример. Я думаю мысль ясна.

Last edited by Sven : 12-26-2011 at 02:53 AM. Reason: Добавлено сообщение
 
 
Alkain
Продвинутый
Default
0

Quote:
Originally Posted by Luvilla View Post
раз статья написана на популярном уровне, стоило бы указать
что точка в начале является необходимостью, а не украшением
Поправим
Quote:
Originally Posted by Luvilla View Post
- что "если вы не видите файла .htaccess, это ещё не значит, что его там нет")
Аналогично, поправим

Quote:
Originally Posted by Luvilla View Post
не совсем корректно сформулировано
ErrorDocument, по сути, никак не редирект - это "своя" страница ошибок
Редирект со страницы несуществующей страницы... так запутаннее получится, имхо


Quote:
Originally Posted by Luvilla View Post
а в админке посмотреть, в phpinfo?
Если рассматривать простого юзера, решившего запустить свой форум или сайт, не знающего основ, то логически ему проще будет посмотреть относительно вышеописанного примера, опять же, имхо.

Благодарю за дополнения
 
 
Sven
Front-End Developer
 
Sven's Avatar
Default
0

Quote:
Originally Posted by Alkain View Post
Редирект со страницы несуществующей страницы... так запутаннее получится, имхо
Верно будет "Редирект на собственную страницу ошибок"
 
 
Alkain
Продвинутый
Default
0

Спасибо за комментарии, еще пару косяков увидел, поправил и дополнил
 
 
Luvilla
Гость
Default

Статья принимается
 
 
хрюк
Гость
Default

Alkain, поздравляю. Полезная информация для пользователей.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:31 PM.


Powered by vBulletin® Version 3.6.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.