Apache: requer autenticação básica, exceto para solicitações específicas de POST

4

(RHEL 6.2, Apache 2.2.1)

Estou tentando fazer com que um site LAMP seja executado por trás da autenticação básica para impedir o acesso geral (é um ambiente de teste para um site ainda em produção) e encontrei um problema em que o recurso de upload de vários arquivos falha porque não manipular corretamente a autenticação; Eu posso ver nos logs do Apache que a autenticação é descartada para o 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

Como uma correção realmente rápida, mudei a configuração do Apache para requerer somente authentictaion para solicitações GET, não POST, mas isso não é desejável do ponto de vista de segurança. A atual diretiva do Apache é:

<Directory />
  AuthName "Priceline Portal Dev"
  AuthUserFile /home/dev_priceline/passwords
  <Limit GET>
    AuthType Basic
    Require valid-user
  </Limit>
</Directory>

O que requer autenticação básica para acessar o site (via GET), mas permite que os POSTs sejam concluídos.

O que eu quero fazer é mudá-lo assim: As solicitações POST contendo "vários" no URL não exigem autenticação Todos os outros pedidos requerem autenticação básica.

Existe uma maneira de fazer isso usando as diretivas do Apache? A funcionalidade de upload múltiplo está embutida no CMS sendo usado, e o auth básico não será usado na produção final, então eu não quero mudar o código de upload em si.

    
por DrStalker 14.03.2012 / 06:32

1 resposta

5

Bem, é muito feio ..

<Directory />
    AuthName "Priceline Portal Dev"
    AuthUserFile /home/dev_priceline/passwords
    AuthType Basic
    Require valid-user
</Directory>
<LocationMatch .*/multiple$>
    <Limit POST>
        Satisfy Any
    </Limit>
</LocationMatch>

Portanto, permita que as regras de autenticação sejam ignoradas (supondo que o host seja permitido por Allow / Deny rules) apenas para POST solicitações que terminem em /multiple , como o do seu log não . Como está esse som?

    
por 14.03.2012 / 07:02