Como ocultar/proteger Javascript com PHP

Como Ocultar/Proteger código 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&#91;'auth'&#93; = "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&#91;'auth'&#93;) || !preg_match("/\.php$/",$_SERVER&#91;'REQUEST_URI'&#93;)):
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

Receba gratuitamente em seu E-mail
Novos artigos do meu Blog!


Após o Cadastro você receberá um Email Automático. Clique no link enviado para Ativar e receber as novidades.

Categorias do site





8 Comentários Deixe o seu

  1. Jonas

    Isto nao protege o script js. Simplesmente mostra para quem está logado.

  2. Samuel Peixoto

    Concordo com o Jonas.

    Você está criando um ambiente restrito. Quem estiver logado poderá sim copiar o código.

    Abs…

  3. Lucas Peperaio

    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

  4. Aprilo

    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?

  5. Lucas Peperaio

    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”

  6. Luiz Zamboni

    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.

  7. Felipe

    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?

  8. Tasca

    Totalmente inútil!!! tudo que fica disponível para o browser, fica livre pra todos, (html css e js).