Ограничение доступа Apache на основе имени файла и имени каталога

Необходимо смочь сделать так при помощи autoexnt от Набора Ресурса Windows Server 2003. Это позволяет Вам выполнять пакетный файл без входа в систему. Существуют статьи в Интернете о том, как сделать это.

1
задан 4 August 2009 в 06:00
3 ответа

Править: из комментария отвечают, что исходное сообщение не было совершенно правильно - ниже, является новым, Переписывают набор правила:

RewriteRule /\..+ - [F]
RewriteCond %{REQUEST_URI} ^/[^_]+/__\w+__\.\w+$ [NC]
RewriteRule ^ - [S=1]
RewriteRule /_.+ - [F]

Порядок важен здесь: - запрещают что-либо запускающееся с периода (.) сначала - это - "глобальное" правило без особого случая. - особый случай \w +.\w + должен быть позволен посредством следующих пропусков S=1, которые следующее правило быть - запрещает чему-либо запускающемуся с подчеркивания (_)

1
ответ дан 4 December 2019 в 02:27
  • 1
    Эй, that' s действительно закрываются. Но it' s столкновение с той же проблемой я имел... /_sam/__foo__.txt позволяется. Мои колеса поворачиваются, однако, и я думаю, что это - правильный подход. Возможно, я должен ожидать до утра :) –  gahooa 4 August 2009 в 05:58
  • 2
    Отредактированное сообщение с рабочей версией для Вас –  DisabledLeopard 4 August 2009 в 06:57

Это кажется на поиск "DirectoryMatch и FileMatch.

С апачского httpd веб-сайта. http://httpd.apache.org/docs/2.0/mod/core.html#directorymatch

<DirectoryMatch> и </DirectoryMatch> используются для включения группы директив, которые будут применяться только к именованному каталогу и подкаталогам того каталога, то же как. Однако это берет в качестве аргумента регулярное выражение.

http://httpd.apache.org/docs/2.0/mod/core.html#filesmatch

Директива <FilesMatch> ограничивает объем прилагаемых директив именем файла, так же, как <Файлы>, директива делает. Однако это принимает регулярное выражение.

0
ответ дан 4 December 2019 в 02:27
  • 1
    Как я указал в своем сообщении, я использую < Каталог ~ "..." > который, согласно апачским документам, точно то же как < DirectoryMatch...>. –  gahooa 4 August 2009 в 05:43
  • 2
    Путем Вы описывали проблему, которая посмотрели, как будто Вы хотели соответствие regex вместо директив, которые только понимают подстановочный знак типа оболочки globing. –  Rik Schneider 6 August 2009 в 07:15

как с большинством вещей как это, порядок правил крайне важен.

лучшее эмпирическое правило, IMO, состоит в том, чтобы поместить исключения особого случая сначала и затем правило общего случая, как так:

  1. позвольте файлы, которые соответствуют (^ |/) __\w + __.\w+ $
  2. отклоните файлы или каталоги, которые соответствуют (^ |/) [. _]

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

BTW, почему имеют такие глупые правила? почему не только помещенные общедоступные файлы в одном каталоге и частные файлы в другом? почему имеют частные файлы как '_private.txt' в каталоге названный / общественностью? почему делают Ваш общедоступный файл и имена каталогов так раздражающе подобными Вашим частным именам? имело бы больше смысла делать вещи более удобным, разумным способом - иногда, лучший ответ является DDTT - "Не Делают Этого, Затем".

0
ответ дан 4 December 2019 в 02:27
  • 1
    Привет Craig. Я полагаю, что Ваш предложенный порядок правила позволил бы / _hidden / __ init __. php - который верен? Относительно BTW я ценю Вас занимающий время, чтобы записать, что, но может уверить Вас, что существует большее изображение, которое я не поднял комнату в сообщении для объяснения. 99% наших non-http доступных файлов полностью за пределами DocumentRoot, но существует некоторое определенное исключение (с очень хорошей причиной), что живой в документе базируются. Или они - уровень каталога PHP или конфигурационные файлы времени выполнения Python. Вызов этого глупого совпал бы с вызовом apache' s .htaccess глупый. –  gahooa 4 August 2009 в 05:50
  • 2
    ре: / _hidden_ / __ init __. php - да, это было бы. that' s одна из проблем с наличием таких подобных шаблонов для Ваших частных и общедоступных файлов. you' ve получил три основных опции: 1. создайте regex для исключения каждого частного каталога, 2. создайте его для включения каждого общедоступного каталога. оба из них являются потенциально бесконечными, таким образом, лучшей является опция 3. разработайте некоторую другую схему именования файла/каталога так, чтобы у Вас мог быть простой regex, который соответствует всем файлам, которые Вы хотите заблокировать, не соответствуя никому Вы хотите позволить. that' s, почему я назвал это глупым..., что это - проблема DDTT. –  cas 4 August 2009 в 06:01
  • 3
    также, добавьте другое правило (перед первым) что каталоги блоков, соответствующие (^ |/) [. _]. */ –  cas 4 August 2009 в 06:05

Теги

Похожие вопросы