Restringir access de arquivos a usuários autorizados de php

Eu herdei um aplicativo com um buraco de segurança shiny.

Tem segurança baseada em session, mas os carregamentos de arquivos (que são específicos do usuário) não são protegidos de forma alguma e são armazenados na tree de arquivos públicos.

Os nomes de arquivos não seguem nenhuma convenção como tal, tornando-os difíceis de adivinhar, mas os dados são sensíveis e, portanto, preciso implementar uma medida de segurança para impedir o access não autorizado aos arquivos.

Mover a localização dos arquivos não é realmente uma opção, então estou olhando para uma solução htaccess para encaminhar solicitações para um script de manipulador php.

Alguém tem experiência em implementar esse tipo de coisa ou qualquer boa solução alternativa? Exemplos específicos de syntax .htaccess muito apreciada, enquanto estou lutando nessa área.

Na verdade, não entendo por que mover-os não é uma opção, uma vez que pressionar os pedidos para um manipulador significa que não importa mais onde eles estão armazenados. Mas você é o homem na cena.

.htaccess parece:

RewriteEngine on RewriteRule path/to/where/these/files/live/(.*) /handlerscript.php/$1 

Então você pega o caminho e o nome do arquivo restantes de $_SERVER['PATH_INFO'] .

Bem, você poderia fazer o arquivo de parame .jpg do apache para uma determinada pasta, adicionando o seguinte ao seu .htaccess

 AddHandler php5-cgi .jpg 

então você poderia definir um arquivo de php para analisar o pedido da maneira como o caos o recomendava e fazendo uma determinada validação, então basta retornar headers jpeg juntamente com a imagem correta que você gostaria de exibir

aqui é um exemplo

  

Por favor, deixe-me saber se você quer um exemplo mais extenso

Eu acho que você pode precisar escrever um script que servirá as imagens, então use htaccess para restringir completamente o access às imagens reais de um navegador.

O script pode acessar o caminho da web para a imagem, decidir se o usuário tem access, então use algo como fpassthru para alimentar uma imagem real para o navegador.

Todas as referências às imagens deveriam ser modificadas, no entanto, para fazer referência ao script de serviço.

Então, em vez de acessar as imagens com /images/123/5423453245.jpg, seria /image.php?images/123/5423453245.jpg

Ou algo parecido com isso.