Ultimamente muitos desenvolvedores tem criado aplicações para web utilizando javascript, css, ajax, xml, e ai por diante. Neste artigo estarei explicando uma forma bem funcional de como proteger os arquivos usando PHP como linguagem dinamica.
(Neste tutorial vamos utilizar o exemplo com javascript, pois as proteções sao mais procuradas para este tipo de arquivo)


# O primeiro passo é ter um arquivo javascript.

Geralmente os arquivos javascript sao salvos em arquivos com extenções "js" (Ex: arquivo.js) assim quando o desenvolvedor nescessita do uso daquele script ele usa um comando que abre o mesmo.
Exemplo:
CODE
<script type="text/javascript" src="arquivo.js"></script>


Mas como nossa proteção irá usar a linguagem PHP para fazer a proteção do arquivo, o nome que tinha a extenção ".js" agora terá ".js.php" para o servidor interpretar os comandos em PHP.

Agora vamos usar um exemplo de arquivo javascript bem básico, onde ele irá somente escrever algum texto na tela.
(Este exemplo ja inclui a parte que protege a abertura do arquivo)
script.js.php
CODE

    <?
    session_start(); // inicia a rotina de sessoes
    header("Content-Type: text/javascript",true); // define que este arquivo vai ter comandos de text/javascript
    if($_SESSION['Chave_Arquivo_script'] != 'Valor_Da_Chave') // se a sessao com o nome da chave nao tiver o valor certo
    {
        echo "document.write('Este script não esta autorizado para abertura');"; // escreve que o arquivo nao esta autorizado
        exit; // interrompe a execução do arquivo
    }
    $_SESSION['Chave_Arquivo_script'] = ''; // sempre que o arquivo passa pela execução, limpa a sessao de chave após a verificação
    unset($_SESSION['Chave_Arquivo_script']); // após definir valor nulo para a sessao de chave, finaliza ela destrindo
    
    // após a verificação em php, procede com a execução do javascript
    ?>
    document.write('Olá mundo, meu script esta protegido.');

* No exemplo acima:
-> Usamos uma $_SESSION (sessão do servidor) para definir uma chave que deverá ter um determinado valor para o script continuar a execução, caso o valor da chave não esteja definido corretamente, escreve a mensagem (em javascript) que o arquivo não tem permições para ser aberto e em seguida interrompe a execução do mesmo.
-> Sempre que o arquivo for executado, o primeiro passo Será verificar se ele é valido, e em seguida limpar a $_SESSION que possui o valor da chave, assim a chave definida como valida será aceita somente uma vez.

Se voce copiar o código do exemplo acima, colar em um arquivo, salvar com o nome citado antes do exemplo, e executar ele, verá que não aparecerá a mensagem "Olá mundo..." e sim a mensagem dizendo que o arquivo não está autorizado para abertura.

# O segundo passo é ter um arquivo que chame o javascript definindo a chave autenticada.

Agora que temos um arquivo protegido, vamos ter que usa-lo em nossas paginas, para isto teremos que (antes da execução do script) definir o valor autorizado para a chave, para que o script identifique que sua página tem o valor certo para a autenticação e por consequencia executar o script ja limpando o valor da chave para não ter possibilidade de aberturas se a redefinição da chave.

Agora vamos usar o exemplo da página que vai autorizar e abrir o script.
(Neste exemplo vamos usar a página chamada index.php considerando que o nosso script devera ser aberto na página principal do site)
index.php
CODE

    <?
    session_start(); // inicia a rotina de sessoes antes de começar o html
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Meu site em PHP com js</title>
    <?
    $_SESSION['Chave_Arquivo_script']    =    'Valor_Da_Chave'; // define a chave com o valor autorizado
    // em seguida abre o arquivo em js
    ?>
    <script type="text/javascript" src="script.js.php"></script>
    </head>
    <body>
    <p>Este a página que abre o script, acima deve aparecer o conteudo retornado pelo.</p>
    </body>
    </html>

* No exemplo acima:
-> Definimos o inicio da rotina de sessoes antes das tags de html.
-> Definimos a $_SESSION com o nome da chave que possui o valor autenticado para o script fazer a verificação, aceitar, exibir o script, e limpar a chave para uma nova verificação futura.
-> E a página se procede exibindo todo o conteudo html e javascript (do arquivo script.js.php) carregados com autorização.

Para ver que realmente funciona, tente abrir o script (script.js.php) no browser, e veja se o conteúdo que aparece é autenticado ou invalido, (o arquivo nao deve conter as informações protegidas quando for executado pelo browser)
Para ver que realmente funciona, experimente tirar a linha (na pagina index.php) que define a $_SESSION com o valor autenticado, você verá que o conteudo que irá aparecer, é o inválido.

Pronto, temos arquivos protegidos, e podemos usar em nossas paginas quando quisermos.
Mas ATENÇÃO:
* Sugiro que use outros nomes para as chaves e os valores usados na autenticação, recomendado usar nomes e valores diferenciados e que dificultam a descoberta.
* Caso for usar a autenticação para mais de um arquivo, use nomes de chaves com prefixos diferentes. Exemplo: $_SESSION['ChaveArquivo_UM'] e $_SESSION['ChaveArquivo_DOIS']

Créditos:
Rafael da Silva - rafael@welterserver.com.br
Welter Server - www.welterserver.com.br

Você gostou? Comente no fórum!

Comentários:

AlexRoncon disse:

/** Editado por micox para evitar discussões desnecessárias **/

É impossivel proteger o codigo fonte só uma pessoa leiga que pode pensar que consegue proteger o codigo fonte html.
Cara desiste dessa ideia nao da para esconder o fonte. Voce só consegue esconder o fonte de voce mesmo ou de outra pessoa leiga.

Micox disse:

Ae rawff, posta um link aí pragente testar.

Mas eu já sou da idéia de que é impossível proteger também. heheh

Daniel Lima disse:

Eu gostei da ideia... da para evitar de ver o código JS... Alias, faço umas coisas para evitar problemas com BD... tipo, gravar cookie e sessão e verificar se são iguais, validade, etc...

Mas eu queria saber como o pessoal do Imasters fez para proteger o CSS deles que fala do evento q vai ter em Sp...

rawff developer disse:

opaa.. ja tentaram fazer o script?
realmente tem uma brexa que permite ver o fonte, mas essa brexa consiste em salvar a pagina toda, o que nem todo desenvolvedor pensa alias temos a ruim mania de ver o fonte, bom, ao invex de falarem, segue o tutorial e v o fonte do script...

PS: como falei, tem uma brexa pra ver o fonte, mas so fui ver depox que fiz o tuto intao nem rola retirar td, e ainda nao axei uma forma de arrumar..

flw []'s smile.gif

QUOTE(Micox @ Jul 16 2006, 11:04 PM) [snapback]1392[/snapback]

Ae rawff, posta um link aí pragente testar.

Mas eu já sou da idéia de que é impossível proteger também. heheh

Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).

Mais recentes em PHP

Classe para controle de banco de dados.
Por Pinguim - Classe para facilitar a manipulação de banco de dados...
Mail injection em php
Por Micox - What??!?...
Zend frameworks - o inicio
Por LeandroBarral - Primeiros passos.....
Classe de conexão com mysql
Por Carutcho - Pô esses dias passei aqui no forum de php pra dar uma...
Decimal para hexadecimal
Por dragun - Exemplo de função recursiva...

Ver mais Artigos de PHP.

Ver e retirar outras dúvidas no fórum Webly.

Alguns Direitos Reservados | RSS | O Fórum

Webly Portal e Fóruns - Internet + Humana | Design by ArthurHenrique.com