Como ocultar/proteger Javascript com PHP
Essa certamente é uma necessidade de muitos programadores Javascript, que não querem ter o seu código exposto a qualquer um por ai… Muitos se enganam ao pensar que é impossível ocultar um código Javascript ou CSS, pois ambos rodam no navegador (cliente)…bastaria exibir o código-fonte e pronto..seria tudo visto! Entretanto, com o uso do PHP e as sessões, é possível sim ocultar todo o código Javascript, CSS e até HTML de qualquer usuário.
A idéia por detrás disto é usar as sessões e os cabeçalhos do PHP para mostrar conteúdos. Geralmente um desenvolvedor Javascript não quer que ninguém veja o seu precioso código-fonte, especialmente se este código conter trechos sigilosos ou inovadores. Entretanto, o navegador ainda precisa acessá-lo normalmente.
Vamos a um exemplo muito simples, onde especificarei apenas os usuários logados para acessarem um determinado código Javascript. Usuários não logados não conseguirão ver o arquivo. Para iniciar, você deve adicionar a extensão PHP os seus arquivos JS/CSS a serem protegidos. Se o arquivo se chama script.js, deverá ser chamado script.js.php
arquivo “index.php”
<?php session_start(); //inicio a sessão $logado = false; //variavel para controle, true ou false if($logado): $_SESSION['auth'] = "códigoqualquer"; //usuário logado, defino uma sessão else: session_destroy(); //destruo a seção, caso o usuário já tenha a seção, mas não esteja logado endif; ?> <!-- Faço a chamada normalmente do arquivo Javascript --> <script type="text/javascript" src="teste.js.php"></script>
e o arquivo script.js.php
<?php session_start(); //inicio a sessão ini_set("display_errors","off"); //bloqueio a exibição de qualquer erro header("Content-Type: text/javascript; charset=utf-8",true); //defino o tipo do conteúdo com Javascript UTF-8 //verifico se a sessão não foi iniciada, mostro a mensagem "arquivo bloqueado" para o usuário e finalizo o script. //Caso a sessão foi iniciada anteriormente, o arquivo continua normalmente if(!isset($_SESSION['auth']) || !preg_match("/\.php$/",$_SERVER['REQUEST_URI'])): die("Arquivo Bloqueado. Você nao esta autorizado a ver este arquivo");//finalizo o processamento do script endif; //continua normalmente o script -> ?> alert("ok");
Neste exemplo, eu simulei um sistema onde é necessário estar logado para processar o script. Quando eu altero a variável $logado para true, o Javascript é acessado normalmente e aparece um alert(“ok”). Caso a variável seja false, é exibida a mensagem de erro..Ou seja, o script foi bloqueado.
A partir desta idéia, é possível bloquear todos os seus scripts JS e até os seus códigos CSS, bastando alterar o header do PHP desta forma
header("Content-Type: text/css; charset: utf-8");
Esta dica também é útil para evitar Hotlink em seus arquivos
Foi útil? Divulgue e comente!
Lucas Peperaio
Estudante de Ciência da Computação, trabalho com desenvolvimento web há 5 anos e com hardware há 8. Nas horas vagas, sou entusiasta de Overclock, Casemod e Benchmarks, além é claro dos Games. Apaixonado por informática e pela vida, procuro compartilhar meus conhecimentos e assim, ajudar as pessoas. Siga-me no youtube, posto semanalmente muito material sobre Hardware, tecnologia e games em geral: Clique aqui
Isto nao protege o script js. Simplesmente mostra para quem está logado.
Concordo com o Jonas.
Você está criando um ambiente restrito. Quem estiver logado poderá sim copiar o código.
Abs…
Mas esta é a idéia, veja o que eu escrevi ali em cima.
“Usuários não logados não conseguirão ver o arquivo”
Este é um exemplo de proteger Javascript, até porque, ocultar 100% é impossível, JS roda no cliente, no navegador, se ocultar do usuário, o próprio navegador não poderá carregá-lo
Tem pessoas que copiaram meus conteúdos, nos quais contém links destes e outros conteúdos, assim estão consumindo minha banda – que faz 5 anos que estoutentando resolver.
Assim, se eu usar php nos meus conteúdos, no meu domínio, os links que estão nos conteúdos copiados ficarão inacessíveis?
Aprilo, veja a solução pra isso aqui:
http://lucaspeperaio.com/utilidades-do-arquivo-htaccess
Olha na parte que diz:
“Protegendo o seu site contra cópia ou uso indevido de arquivos”
Cara, perdoe mas isso foi completamente inútil…vc fez um include com php , e mudar a extensão do arquivo não traz benefício algum, seria mais prático incluir o js e css através das tags apropriadas com um “echo” , caso esteja logado. O único benefício que se pode ter transformando .js e .css em .php seria para usar variáveis do “server side” nestes arquivos.
amigo, tenho um script ptc que oculta certos anuncios de publicidade das paginas de anunciantes, ouvi falar que tem bloqueio e pode ser revertido, vc sabe algo sobre isso?
Totalmente inútil!!! tudo que fica disponível para o browser, fica livre pra todos, (html css e js).