Proteja seu website ou página html com encriptaçâo

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.

[ Hits: 37.286 ]

Por: M4iir1c10 em 17/04/2008 | Blog: https://github.com/mauricioph


O que esse script faz?



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:

%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%3Cli%3E%3Ca%20href%3D%22

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.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. O que esse script faz?
   3. O código
Outros artigos deste autor

Aprendendo a melhorar os seus scripts

Codificação e decodificação entre ASCII, hexadecimal e unicode

Áudio Profissional no GNU/Linux

Rode o Blackbox no Windows XP

Bug afeta todas as distros

Leitura recomendada

Alternativas ao Google - Sites de busca e motores de procura

Acessibilidade na Web

Camada de Transporte TCP/IP e Aplicação

Symbaloo para uso em Química e Pesquisa Científica

Senhas seguras: algumas técnicas e script para teste

  
Comentários
[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.

Critica construtiva ok.

[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. =]

[]s

[5] Comentário enviado por M4iir1c10 em 18/04/2008 - 01:18h

Baseado noque vocês estão me falando, então permitam mudar a apresentação desse artigo:

"Nesse artigo vou mostrar como proteger seu website do ataque de script-kids e lammers usando codificação Hexadecimal através de um javascript."

Não é sempre que se acerta nas palavras né?

Eu sei que isso esta longe de um PGP mais pelo menos algumas pessoas nao entendem bulufas do que estará escrito.

Obrigado pelas criticas construtivas afinal e assim que se aprende mais...

[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!

[7] Comentário enviado por elgio em 18/04/2008 - 10:18h

Exato!
Minhas criticas não foram quanto ao artigo, mas sim a força da expressão "criptografia".

[]'s

[8] Comentário enviado por NewtonJr. em 16/05/2008 - 11:31h

Mauricio, seu código não rodou. Peço que me envie uma nova versão do mesmo para teste. No aguardo. newton.teixeira@yahoo.com.br

[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:

document.pad.text.value="<script>\n<!--\ndocument.write(unescape(\""+compilation+"\"));\n//-->\n<\/script>";


[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)>

<input type=button value=Vizualizar name=view onClick=preview() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
<input type=button value=Decodificar name=retur onClick=uncompile() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
<input type=reset value=Limpar name=clear onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
</form>
<!-- Compilation Panel -->
</body>
</html>

[11] Comentário enviado por comfaa em 28/10/2008 - 11:58h

muito bom !!


[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" />

Você usou "urc". Altere por "src".
;)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts