Захист паролем каталогу, але чи не файли цього каталогу?


8

Мені було просто цікаво, чи можна захистити каталог із комбінацією імені користувача / пароля за допомогою файлів .htaccess і .htpasswd, але не захистити файли всередині. тобто можна зв’язати, скажімо, зображення в цьому каталозі з друзями, але перегляд самого каталогу не було б дозволено без імені користувача / пароля. Дякуємо всім заздалегідь.

Відповіді:


9

Спробуйте це у вашому .htaccess:

Require valid-user

<Files ?*>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Тут Require valid-userпотрібен будь-який відомий логін. Потім ви виправляєте це обмеження для файлів, що мають принаймні один символ у їхньому імені - саме таким буде відповідати глобальний шаблон ?*для <Files>розділу -, що фактично означає, що додані правила застосовуються до файлів, але не до каталогів.

У змінених правилах для файлів ключ є Satisfy any. Це дозволяє авторизацію задовольняти або обліковими записами, або IP-адресою. Тоді ви дозволяєте проходити будь-яку IP-адресу, тому запити завжди дозволені.

Тож зараз для перегляду цього каталогу або будь-якого з його підкаталогів потрібен логін, але безпосередньо отримання файлу з нього не буде.

Що ви хотіли.


0

Так, ви можете захистити файли та каталоги за іменем або шаблоном. Ви вже повинні використовувати це для обмеження доступу до файлів .ht *. Перевірте свою конфігурацію apache. Необхідний шаблон файлу, ймовірно, буде "/ $".


0

Використовуйте, LocationMatchщоб обмежити авторські речі індексом каталогу.


<LocationMatch "/ pictures"> AuthUserFile /home/asdasd/public_html/user5678/pictures/.htpasswd AuthGroupFile / dev / null AuthName "Обмежений каталог" AuthType Basic </LocationMatch> <Обмежити GET POST> вимагати дійсного користувача </Limit> Це мій поточний .htaccess файл, розташований в / images. Чи є щось, що я роблю неправильно? Здається, це поверне 500 помилок внутрішнього сервера.

а) читайте про LocationMatch, для цього потрібен регулярний вираз. б) Вам потрібно покласти require valid-userвсередину LocationMatchблоку звичайно (чому Limitвсе-таки заява?)
Мар'ян

0

Ви хочете просто вимкнути показ Apache індексу папки. Помістіть це в .htaccess:

Options -Indexes

Таким чином, коли користувачі відвідують http://www.url.com/folder/, вони отримують у списку каталогів відхилено помилку. Але коли вони відвідують, http://www.url.com/folder/file.jpgвони можуть побачити файл.


1
Цього не запитували, це вимкнення списків, а не захист їх паролем
Krzysztof Bociurko

-1

Якщо ви хочете, щоб перелік каталогів був видимим лише авторизованим користувачам, але дозволяєте кожному завантажувати файл (щоб ви могли надсилати посилання людям), тоді вам потрібен сценарій певного типу (PHP, ASP тощо), який запитує користувача у пароль, і якщо вони правильно їх виводять, відображається вміст каталогу. Ви б помістили цей скрипт у каталог і назвали його як index.php, щоб він отримував службу, а не апаш генерував індекс каталогу.


-1

Так. Додайте файл index.html, який містить список вмісту папки та обмежує доступ до цього файлу за допомогою .htaccess. Якщо ви хочете, щоб індекс був динамічним, вам потрібно буде використовувати якийсь сценарій (або включити сторону сервера), щоб генерувати індекс.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.