Ir para conteúdo
Entre para seguir isso  
Magus

Encriptando senhas para maior segurança!

Recommended Posts

Magus    2
Magus

Dicas de segurança

 

Um pouco de segurança nunca é demais, não é? Ainda mais se tratando de um servidor pessoal, aonde muitos de vocês trabalham bastante para torná-lo popular e forte contra ataques DDoS ou hackers. Uma dica bem válida de segurança é a encriptação das senhas dos jogadores utilizando hashs, que resulta em um processo unidirecional (não existe decriptação).

 

Existem vários algorítmos que geram tais hashs, os otservs atuais apresentam suporte a dois deles: MD5 e SHA-1. A diferença entre os dois está no tamanho de bits da saída (da encriptação), onde o primeiro resulta em uma saída de 128 bits enquanto o segundo em uma saída de 160 bits. Sendo assim, SHA-1 se torna mais eficiente do que o MD5 pois a possibilidade de colisão de hashs (duas hashs iguais com combinações de letras diferentes) é muito menor; mas dificilmente essa vulnerabilidade seria um problema para o nosso quesito, já que a quantidade de dados encriptados não seria elevada.

 

Vantagens?

 

Um exemplo de vantagem é usar a encriptação para impedir qualquer ladrão de cookies que utilize ataques comuns como cross-site scripting (XSS) de decifrar as senhas. Outro exemplo é se qualquer hacker obtiver um acesso somente-leitura ao banco de dados - ficará a ver navios.

 

Porém a segurança vem com um custo: senhas não poderão ser recuperadas, apenas trocadas. Perceba que no próprio sistema do fórum se você perder a senha, ele lhe dará um link para resetá-la. Isso porque estão todas encriptadas com esse método.

 

Conheço um site que decripta, hahah sou foda...

 

Na verdade, o que esses sites que dizem decriptar as hashs fazem nada mais é do que lhe informar hashs que eles tenham salvas no banco de dados deles. O site www.cmd5.com, por exemplo, tem mais de 4 TB de hashs MD5 no banco de dados mas não consegue identificar (por exemplo) "myp4ssw0rd" encriptada, isso porque senhas utilizam combinações de caracteres muito inesperadas e são enésimas possibilidades.

 

Utilizando no OT

 

Há uma variável passwordType no config.lua que está configurada como plain, significa que ele está reconhecendo as senhas como elas mesmas. Para utilizar o SHA-1 ou MD5, primeiro basta apenas alterar a variável para sha1 ou md5. O problema é agora, caso o seu site não tenha uma opção para encriptar essas senhas, você terá que modificá-lo manualmente. Vou usar como exemplo o site da OTNet (não possui também):

 

Na parte de login, encriptar o $_POST enviado para comparação (linha 3.400, index.php):

$pass = sha1($_POST['pass']);

E na parte de criar a conta, encriptar a senha enviada ao banco de dados (linha 3.594, index.php):

mysql_query("INSERT INTO `accounts` (`name`, `password`, `creationdata`, `premdays`, `email`, `key`, `activated`) VALUES ('".$post[0]."', '".sha1($post[1])."', '".time()."', '".$freePremmy."', '".escape_string($post[4])."', '$rk', '$activated')");

[spoiler=+ Infos]Caso seu servidor já tenha várias contas, você pode usar a consulta SQL abaixo para encriptar todas as senhas em SHA-1, mas lembre-se que essa ação é irreversível.

UPDATE `accounts` SET `password` = sha1(password)

 

Nota: se você prefere usar md5, apenas troque todos sha1() do exemplo para md5().

 

 

Outras dicas de segurança

 

Aproveito para deixar outras dicas para vocês.

 

[spoiler=Protegendo o phpMyAdmin]Ao instalar o Xampp por exemplo, o phpMyAdmin (local aonde ficará o banco de dados do servidor caso for MySQL) estará desprotegido contra invasões. Para protegê-lo de modo eficaz faça o seguinte:

 

Clique no link "Privilégios", que fica um pouco baixo do campo de criação de banco de dados.siteimgyu1.jpg

 

Clicando lá, uma lista com os usuários irá aparecer. Clique no ícone de edição do usuário root.siteimgyn3.jpg

 

Nesta página, não altere nada, somente crie uma senha para tal usuário.

 

siteimgmk0.jpg

 

Clique no Executar que está na abaixo destes campos. Sua senha foi criada/alterada! ;)

 

Agora, você precisa alterar o método de autenticação do phpMyAdmin. Para fazê-lo, vá até a pasta phpMyAdmin do webservidor (fica acima de htdocs) e abra o arquivo config.inc.php com algum editor de texto.

 

Você achará uma variável com estes dados:

$cfg['Servers'][$i]['auth_type'] = 'config';

Mude-a para:

$cfg['Servers'][$i]['auth_type'] = 'http';

Salve o arquivo.

 

Pronto! Seu banco de dados estará totalmente protegido contra invasões, para acessá-lo basta usar o login "root" e a senha que você definiu.

 

[spoiler=Protegendo contra XSS]Cross-site scripting (XSS), resumidamente, é o ato de injetar códigos html em querystrings ou campos de comentários desprotegidos, consequentemente sendo possível injetar códigos javascript - o que pode ser muito inseguro. Para se proteger disso você pode simplesmente usar a função strip_tags() do php ou qualquer expressão regular para remover tags comprometedoras. Um exemplo simples:

$_GET = array_map('strip_tags', $_GET);
$_POST = array_map('strip_tags', $_POST);
$_COOKIE = array_map('strip_tags', $_COOKIE);

$_GET, $_POST e $_COOKIE são arrays globais que guardam informações enviadas em formulários (POST), querystrings (GET) e cookies, famoso GPC. A função array_map(), como o nome já diz, irá mapear todos os elementos do array aplicando a função strip_tags() neles. Assim, se você enviar algo como: ?charactername=<b>Magus</b> ele não deixará a busca em negrito.

 

Você também pode usar algo como:

// Página de busca (exemplo)
$meuchar = $_REQUEST['personagem'];
if ereg("<\w+>", $meuchar) { exit("Ação não permitida."); }

Aí vai da criatividade.

 

É isso ^^

Compartilhar este post


Link para o post
Bumper    0
Bumper

é incrivel como os invejosos arranjam geito de hackiar :D

Adorei o tutorial, com certeza vai ajudar muito a diminuir os hackings.

Compartilhar este post


Link para o post
Chê.    1
Chê.

Bah magueta, ficou tri isso. Tinha procurado uns tutoriais já, porém o teu ta bem mais simples, e direto.

 

Parabéns!

Compartilhar este post


Link para o post
Kah~    0
Kah~

Atoron esse tutorial :) bem útil mesmo.

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×