Se protegendo de ataques Defacement com javascript!
- 20/09/2010
- Dicas Gerais, Segurança
Aqui abaixo tenho um método de proteção de javascript:
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 dinâmica.
(Neste tutorial vamos utilizar o exemplo com javascript, pois as proteções são mais procuradas para este tipo de arquivo)
# O primeiro passo é ter um arquivo javascript.
Geralmente os arquivos javascript são salvos em arquivos com extensões “js” (Ex: arquivo.js) assim quando o desenvolvedor necessita do uso daquele script ele usa um comando que abre o mesmo.
Exemplo:
==================================
<script 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)
Nome do arquivo: script.js.php
==================================
<?
session_start(); // inicia a rotina de sessões
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 sessão com o nome da chave não tiver o valor certo
{
echo “document.write(‘Este script não esta autorizado para abertura’);”; // escreve que o arquivo não 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 sessão 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 usá-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 conseqüência executar o script já 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)
Nome do arquivo: index.php
==================================
<?
session_start(); // inicia a rotina de sessões 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 src=”script.js.php”></script>
</head>
<body>
<p>Este a página que abre o script, acima deve aparecer o conteúdo retornado pelo.</p>
</body>
</html>
==================================
* No exemplo acima:
-> Definimos o inicio da rotina de sessões 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 conteúdo 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 conteúdo 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’]
Relacionado
Sobre o blog
Este Blog tem o objetivo de divulgar as novidades da WebinHost e compartilhar notícias sobre hosting, servidores, empreendedorismo e todo universo tecnológico.