(RHEL 6.2, Apache 2.2.1)
Я пытаюсь запустить сайт LAMP за базовой аутентификацией, чтобы предотвратить общий доступ (это тестовая среда для сайта, все еще находящегося в производстве), и я столкнулся с проблемой, когда функция загрузки нескольких файлов не работает, потому что она неправильно обрабатывает аутентификация; Я вижу в журналах Apache, что аутентификация сброшена для POST
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /index.php/tools/required/files/import?ocID=&searchInstance=file1331694544 HTTP/1.1" 200 8558
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.js?_=1331694608575 HTTP/1.1" 200 36807
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.handlers.js?_=1331694608601 HTTP/1.1" 200 6443
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.fileprogress.js?_=1331694608621 HTTP/1.1" 200 7529
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.queue.js?_=1331694608636 HTTP/1.1" 200 3479
10.77.34.123 - testuser [14/Mar/2012:14:10:14 +1100] "GET /concrete/flash/swfupload/swfupload.swf?preventswfcaching=1331694608650 HTTP/1.1" 200 12419
10.77.34.123 - - [14/Mar/2012:14:10:20 +1100] "POST /index.php/tools/required/files/importers/multiple HTTP/1.1" 401 488
В качестве действительно быстрого исправления я изменил конфигурацию Apache, чтобы аутентификация требовалась только для запросов GET, а не POST, но это нежелательно с точки зрения безопасности. Текущая директива Apache:
<Directory />
AuthName "Priceline Portal Dev"
AuthUserFile /home/dev_priceline/passwords
<Limit GET>
AuthType Basic
Require valid-user
</Limit>
</Directory>
Что требует базовой аутентификации для доступа к сайту (через GET), но позволяет проходить POST.
Я хочу изменить это так: POST-запросы, содержащие "несколько" в URL-адресе, не требуют аутентификации. Для всех остальных запросов требуется базовая аутентификация.
Есть ли способ сделать это с помощью директив Apache? Функциональность множественной загрузки встроена в используемую CMS, а базовая аутентификация не будет использоваться в финальной версии, поэтому я не хочу изменять сам код загрузки.
Что ж, это довольно некрасиво ..
<Directory />
AuthName "Priceline Portal Dev"
AuthUserFile /home/dev_priceline/passwords
AuthType Basic
Require valid-user
</Directory>
<LocationMatch .*/multiple$>
<Limit POST>
Satisfy Any
</Limit>
</LocationMatch>
Итак, просто разрешите игнорировать правила аутентификации (при условии, что хост разрешен Allow
/Deny
правила) только для POST
запросы, заканчивающиеся на /multiple
, как и в вашем журнале. Как это звук?