Apache htaccess .phps?

1

Então eu quero que o usuário seja capaz de escrever "foo.phps" para um script "foo.php" para apresentar a fonte desse arquivo.

Eu só quero fazer isso em um diretório (já que é um risco de segurança). Posso usar o .htaccess?

Eu adicionei um arquivo .htaccess ao diretório e escrevi o seguinte:

AddType application/x-httpd-php-source .phps

Em seguida, reiniciei o Apache, mas não consigo adicionar "s" ao arquivo para obter a origem. Eu preciso fazer algo com o PHP também?

    
por Sandman 04.09.2009 / 15:05

3 respostas

1

A partir dos documentos do php , você precisa usar um SetHandler

<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>
    
por 04.09.2009 / 15:40
2

Se você quer saber se você pode usar uma diretiva em um .htaccess em geral, você sempre pode consultar a documentação. Para o Apache 2.0, consulte:

link

Description: Maps the given filename extensions onto the specified content type
Syntax:      AddType MIME-type extension [extension] ...
Context:     server config, virtual host, directory, .htaccess
Override:    FileInfo
Status:      Base
Module:      mod_mime

Em particular, observe a parte "Contexto:".

Neste caso específico, sim, você pode. Você só precisa ter certeza de permitir substituições para FileInfo nesse diretório específico:

por exemplo,

<Directory /path/to/my/site>
    AllowOverride FileInfo
</Directory>

Você também precisa ter certeza de que o arquivo EXISTE. Se você tem um arquivo chamado test.php, você não pode simplesmente solicitar o test.phps

Para resolver esse problema, você pode usar mod_rewrite para forçar um manipulador. Por exemplo, esta regra está na documentação do mod_rewrite como um bom exemplo de mudança no handler em mod_rewrite

RewriteEngine On
RewriteRule ^(/source/.+\.php)s$ $1 [H=application/x-httpd-php-source]

ou você pode criar um link simbólico, mas precisará fazer isso para cada arquivo manualmente (ou script) e para novos arquivos.

ln -s test.php test.phps
    
por 04.09.2009 / 15:37
0

Uma maneira de resolver isso é que você precisará de um script adicional que simplesmente produz a fonte do arquivo especificado. Então você pode escrever uma regra de reescrita para reescrever

  • foo.phps

em

  • showmethesource.php? input = foo.php

Um problema importante com isso é a segurança. Certifique-se de que você só pode enviar os arquivos desejados e não qualquer arquivo (como / etc / passwd) !!

    
por 04.09.2009 / 15:31