Como proteger o conteúdo de páginas web – Parte 3 – Concepção Web
Como proteger o conteúdo de páginas web – Parte 3
11 de novembro de 2018 26 de abril de 2019 Estagiário de TI
Restringindo o acesso aos arquivos
Este terceiro e último artigo da série de três artigos intitulada Como proteger o conteúdo de uma página web, vamos trabalhar basicamente com o Apache. Vamos alterar as algumas diretrizes do servidor para proteger os arquivos do site, permitindo que eles sejam acessados somente através determinadas páginas. Vamos usar regras rewrite no padrão Apache, mas com um pouco de conhecimento de outros servidores não Apache, essas regras poderão ser utilizadas sem problema.
Mas antes de continuar a ler este artigo, não deixe de ler o primeiro e o segundo. Este último artigo é o complemento dos dois primeiros e para se alcançar um resultado melhor na proteção do conteúdo do site, as técnicas descritas não três artigos devem ser implementados em conjunto.
Voltando ao assunto principal deste artigo, a intenção aqui é que arquivos como o script criado no primeiro artigo da série não possam ser visualizado no navegador. É muito fácil visualizar um determinado arquivo Javascript ou CSS de um site simplesmente digitando o endereço dele na barra de endereços do navegador.
Por exemplo, no nosso caso, se for digitado o endereço do arquivo script.js criado no primeiro artigo, algo como http://seusite.com/script.js, na barra de endereço do navegador, ele seria exibido e todo o código Javascript do arquivo estaria disponível para o visitante do site, e um programador ou usuário mais "espertinho" poderia contornar tudo o que fizemos no script.js.
Então neste terceiro artigo, vamos dificultar a exibição do código fonte desses arquivos Javascript, CSS ou até imagens ou qualquer outro arquivo que não deva ser exibido ou acessado a não ser por uma determinada página do site.
Para entender este artigo e as regras rewrite que vamos usar, é aconselhável que você tenha um pouco de conhecimento sobre expressões regulares, um recurso poderoso em que vale a pena investir para aprender um pouco sobre o assunto. Mas se você não sabe nada de expressões regulares não em problema, basta seguir fazer o que passamos neste artigo e tudo deverá dar certo.
Pra começar, vamos precisar alterar o arquivo .htaccess ou criar esse arquivo na pasta onde estão as páginas onde o arquivos a serem protegidos serão acessados ou utilizados. Vamos inserir algumas linhas dentro da seção rewrite do .htaccess que irão redirecionar o visitante no caso dele tentar visualizar o código de um arquivo Javascrip por exemplo, digitando o seu endereço na barra de endereços do navegador.
Então, abra ou crie o arquivos .htaccess. Se você já tem o arquivo no site, localize a seção rewrite, pesquisando pela linha "<IfModule mod_rewrite.c>". Nesta seção do arquivo, estão todas as diretrizes rewrite do Apache.
Se foi necessário criar um novo arquivo .htaccess, então crie a seção rewrite digitando o seguinte no arquivo:
Agora você precisa inserir as linhas abaixo dentro da seção rewrite, logo abaixo da linha RewriteEngine On.
RewriteCond %{HTTP_REFERER} !^http://(www\.)?seusite(.+.)?/pagina1.php [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?seusite(.+.)?/pagina2.html [NC] RewriteRule .*.(pdf|jpg|png|html|htm|zip|rar|js)$ /erro.html [L]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?seusite(.+.)?/pagina1.php [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?seusite(.+.)?/pagina2.html [NC]
RewriteRule .*.(pdf|jpg|png|html|htm|zip|rar|js)$ /erro.html [L]
As duas primeira linha são as condições para que o rewrite seja executado. A última linha é a regra rewrite e redireciona o visitante para uma página de erro.
Nesse exemplo, são duas condições que determinam que os arquivos só podem ser acessados se HTTP_REFERER não combinar com a expressão regular indicada na condição, ou seja as expressões !^http://(www\.)?seusite(.+.)?/pagina1.php e !^http://(www\.)?seusite(.+.)?/pagina2.html. Isto é, a página que está tentando acessar os arquivos, tem que ser uma página do site indicado por "seusite", e especificamente as páginas "pagina1.html" e "pagina2.html".
Na última linha com RewriteRule, temos a expressão regular .*.(pdf|jpg|png|html|htm|zip|rar|js)$ que entre os parênteses trás as extensões dos arquivos que devem ser protegidos e o endereço /erro.html da página (ou endereço) para a qual o visitante deve ser redirecionada.
Resumindo. Se você tem um arquivo Zip por exempo, que só deve ser baixado por um link em uma determinada página que por sua vez, só pode ser acessada se o visitante informar uma senha, e de alguma forma o visitante conseguiu o endereço do arquivo e tentar acessá-lo diretamente digitando o endereço do Zip na barra de endereços do navegador, ele será redirecionado para a página de erro, ou qualquer outro endereço informado na linha RewriteRule .
Essas linhas do exemplo precisam ser alteradas para se adequarem ao seu caso. Por exemplo, se você está implementando este mecanismo no site docesdaclara.com.br e os arquivos de imagens, Javascript e CSS só podem ser acessados na página doces.html, então a linha RewriteCond neste caso ficaria assim:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?docesdaclara(.+.)?/doces.html [NC]
Isso impediria que os arquivos Javascript, CSS ou imagens pudessem ser acessados diretamente pelos seus endereços ou por qualquer outra página do site ou por qualquer outro site. Para liberar os arquivos para todas as página do site, seria necessário alterar a expressão regular, removendo o nome da página doces.html e substituindo por (.*?).
RewriteCond %{HTTP_REFERER} !^http://(www\.)?docesdaclara(.+.)?/(.*?) [NC]
Na linha RewriteRule, você pode usar qualquer endereço de redirecionamento para onde o visitante "espertinho" deva ser redirecionado, até mesmo o endereço de outro site ou um endereço inválido com uma página que não existe no seu site, assim o visitante seria redirecionado para a página de erro 404 padrão do site.
Bom, é isso. Com este artigo chegamos ao final desta séria. Tenha em mente que esta trás apenas ideias que podem ser implementadas em qualquer site mas que com certeza, necessitaram de ajustes para funcionar. Não deixe se ler os dois artigos anteriores para ter a visão geral. Esperamos que esta séria seja útil.
Não deixe de curtir a página da Concepção Web no Facebook para ficar informado sobre novos artigos e até a próxima.