Nesse artigo vou mostrar como proteger seu website do ataque de script-kids, lammers, hackers (crackers) etc usando encriptação através de um javascript.
Esse script vai analisar todo o conteúdo da sua página HTML (links, imagens, tabelas, formulários, scripts etc), vai procurar quais caracteres podem ser modificados para o valor equivalente em hexadecimal (estou trabalhando em uma versão para unicode também) e quais não podem ser modificados.
Ao encontrar os caracteres que podem ser modificados começa o processo de substituição, fazendo assim que o código da página fique irreconhecível ao ser humano, porém reconhecível ao navegador.
Quando a pessoa suspeita vê o seu código-fonte ele vai ver algo como:
Porém não haverá nenhuma mudança no design da página, os visitantes do seu site nem notarão que estão em uma página encriptada. Os scripts funcionarão sem nenhum problema. Caso você esteja desconfiado que os scripts possam não funcionar, deixei um botão para que você possa visualizar a página como vai ficar.
Após a encriptação, selecione e copie o texto, abra a sua página em um editor de texto e cole o código no arquivo, substituindo o código antigo, salve e abra o arquivo com o Firefox ou outro navegador, pronto, você tem páginas protegidas.
Lembre-se que esse script não é o "super-script", todo tipo de segurança que você pode colocar no seu site é bom para evitar dor de cabeça.
O funcionamento
e o seguinte:
1. Na grande área de texto o você vai colar o código-fonte da página você quer copiar.
2. Os botoes são: Codificar, Selecionar, Visualizar o conteúdo da página, Decodificar, Limpar.
Creio que não seja necessário explicar o que eles fazem, né? Então vamos direto para o código.
[1] Comentário enviado por stremer em 17/04/2008 - 15:31h
cara. para quem não conhece nada até pode servir para alguma coisa, mas isto esta longe de ser criptografia, é mais mudar a forma de codificação dos caracteres ou qualquer coisa parecida. Criptografia seria se você realmente criptografasse o código de alguma maneira e montasse ele de maneira dinâmica pelo javascript, baseado em uma chave obtida naquele momento por ajax por ex. ai sim seria algo mais inteligente que ja dificultaria o trabalho de quem quisesse ver o código.
Mesmo assim qualquer coisa que roda no lado do cliente é somente apresentação e não tem impacto nenhum na parte do servidor (como php que foi citado). Existem algumas ferramentas para criptografar sim arquivos php, para evitar que vejam o código fonte caso o programa tenha alguma brecha que permita download de tais arquivos ou qualquer acesso ao servidor que ai é mais inteligente.
Importante lembrar que ambos os casos não evitam nenhum tipo de injection, pois isto é problema do programa codificado em si e não tem nada a ver com criptografia.
[2] Comentário enviado por super-root em 17/04/2008 - 16:58h
As Funções escape() e unescape() são funções do java script. Estão longe de ser uma criptografia. Muito facio de quebrar. Isso eu fazia quando era iniciante na net, pegava as página supostamente criptografadas fazia o processo inverso, que é muito simples, usando o unescape. Valeu pela iniciativa mas não achei um arquivo bom.
[3] Comentário enviado por elgio em 17/04/2008 - 19:03h
Faço coro ao que disse o stremer.
Isto não é encriptação, é obscuridade.
Encriptação mesmo, de verdade, só se tu usasse algum algoritmo simétrico como até mesmo o antigo DES no lado do servidor.
[4] Comentário enviado por y2h4ck em 17/04/2008 - 19:24h
Bom ... só pra complementar os nossos amigos ai ... existe até um site na internet com challenges de "hacking" em que vários dos exercícios são justamente fazer bypass neste tipo de proteção ai. =]
[6] Comentário enviado por stremer em 18/04/2008 - 09:13h
ok cara.
E quanto a sites com challenges "hacking". Só pra citar o http://www.mod-x.co.uk/, é bem legal, pena que é bem "windows" o negócio, tem até uma fase que vc tem de quebrar a senha de um programa, usar debugger e tudo mais (como se tivesse fazendo um crack). Tem parte de descompilar classe java, etc. Sniffer. É bem legal.
Agora tbem o título ficará mais correto, porém para lammers e script-kids mtas vezes não precisa nem codificar, as vezes só colocar um javascript que bloqueia os botões do mouse ja resolve (kkkkk).
Mas como falei, pra quem não conhece quase nada, sempre informação nova ta valendo!
[9] Comentário enviado por M4iir1c10 em 22/08/2008 - 00:52h
A todos os que fizeram o teste e o codigo nao rodou:
quando o codigo foi passado para o site houve um problema que eu espero seja concertado agora:
Na linha 76 do codigo na funcao compile() o site nao colocou os caracteres das barras invertidas \ entao aqui vai o codigo que voce deve mudar para fazer funcionar:
[10] Comentário enviado por M4iir1c10 em 22/08/2008 - 00:52h
E aqui o codigo completo:
<html><head><title>Compile</title>
<script language="javascript">
<!--
//////////////////////////////////////////////////////////////////
// Source Code Encrypter v1.0 //
//////////////////////////////////////////////////////////////////
// //
// Este JavaScript pode ser usado livremente, desde que esta mensagem
// esteja aqui no cabeçalho do script. Quaisquer modificações
// e bugs encontrados (e consertados), são bem vindos.
// mauriciophnz@yahoo.co.nz
//
//////////////////////////////////////////////////////////////////
var i=0;
var ie=(document.all)?1:0;
var ns=(document.layers)?1:0;
function initStyleElements() /* Estilo para os botões */
{
var c = document.pad;
if (ie)
{
c.text.style.backgroundColor="#DDDDDD";
c.compileIt.style.backgroundColor="#C0C0A8";
c.compileIt.style.cursor="hand";
c.select.style.backgroundColor="#C0C0A8";
c.select.style.cursor="hand";
c.view.style.backgroundColor="#C0C0A8";
c.view.style.cursor="hand";
c.retur.style.backgroundColor="#C0C0A8";
c.retur.style.cursor="hand";
c.clear.style.backgroundColor="#C0C0A8";
c.clear.style.cursor="hand";
}
else return;
}
/* Luminosidade dos botões no painel de compilacao */
function LightOn(what)
{
if (ie) what.style.backgroundColor = '#E0E0D0';
else return;
}
function FocusOn(what)
{
if (ie) what.style.backgroundColor = '#EBEBEB';
else return;
}
function LightOut(what)
{
if (ie) what.style.backgroundColor = '#C0C0A8';
else return;
}
function FocusOff(what)
{
if (ie) what.style.backgroundColor = '#DDDDDD';
else return;
}
/* Luminosidade dos botões */
function generate() /* Gerador da "Compilação" */
{
code = document.pad.text.value;
if (code)
{
document.pad.text.value='Compilando...Espere por favor!';
setTimeout("compile()",1000);
}
else alert('Antes de apertar o botão escreva alguma coisa para ser compilada')
}
function compile() /* The "Compilation" */
{
document.pad.text.value='';
compilation=escape(code);
document.pad.text.value="<script>\n<!--\ndocument.write(unescape(\""+compilation+"\"));\n//-->\n<\/script>";
i++;
if (i=1) alert("Página codificada 1 vez!");
else alert("Página codificada "+i+" vezes!");
}
function selectCode() /* Selecionando o código para copiar */
{
if(document.pad.text.value.length>0)
{
document.pad.text.focus();
document.pad.text.select();
}
else alert('Não há nada para ser selecionado!')
}
function preview() /* Visualizar a codificação */
{
if(document.pad.text.value.length>0)
{
pr=window.open("","Preview", "scrollbars=1,menubar=1,status=1,width=700,height=320,left=50,top=110");
pr.document.write(document.pad.text.value);
}
else alert('Nada para visualizar!')
}
function uncompile() /* Decodificando o "Código" */
{
if (document.pad.text.value.length>0)
{
source=unescape(document.pad.text.value);
document.pad.text.value=""+source+"";
}
else alert('Você precisa de um código codificado para poder decodificar!')
}
// -->
</script>
</head><body>
<!-- Compilation Panel -->
</p>
<form method=post name=pad align=center>
<textarea rows=11 name=text cols=58 style="background-color:#BEBEBE;width:95%"></textarea>
<br>
<br>
<input type=button value=Codificar name=compileIt onClick=generate() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
<input type=button value=Selecionar name=select onClick=selectCode() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
[12] Comentário enviado por pais em 06/03/2011 - 18:21h
Oi M4iir1c10.
Sou iniciante programação isto é se criar site for programar.
Gostei muito destas dica e orientação porem eu não conseguir inserir imagens.
Os passo em que seguir foram esses;
Criei um diretório chamado <teste em html> dentro dela add duas imagens.
Primeiro tentei.
<img urc="nome da imagem.jpg"> e
<img urc="/teste em html/nome da imagem.jpg">
Obs todas as imagens a instenção é jpeg
[13] Comentário enviado por viniciusdias em 26/12/2013 - 15:16h
[12] Comentário enviado por pais em 06/03/2011 - 18:21h:
Oi M4iir1c10.
Sou iniciante programação isto é se criar site for programar.
Gostei muito destas dica e orientação porem eu não conseguir inserir imagens.
Os passo em que seguir foram esses;
Criei um diretório chamado <teste em html> dentro dela add duas imagens.
Primeiro tentei.
<img urc="nome da imagem.jpg"> e
<img urc="/teste em html/nome da imagem.jpg">
Obs todas as imagens a instenção é jpeg
Amigo, o código para inserir imagens em html é:
<img src="imagem.jpg" alt="Texto Alternativo" />