Ir para conteúdo
  • Cadastre-se

[Explicação]Segurança de Site Básica


Cassiano Guerra

Posts recomendados

Eu pelo menos já sofri disso e foi por falta de atenção mesmo, mas acontecem com provavelmente TODOS que estão começando! O pior medo, HACKER.

 

A primeira imprensão que as pessoas têm é que o projeto está tudo acabado. Mas metade das coisas tem solução

 

E a mais básica é botando segurança contra MySQL Injection.

 

Fácil, crie um novo usuário usando Navicat (O mais conhecido).

 

 

Abra seu Navicat e abra sua conexão local.

 

 

Lá em cima tem "Manage Users", abra aquilo.

 

 

Clique em "Add User" e preencha os campos corretamente e COM SENHA (para maior proteção uma senha com números, letras e códigos)

 

 

Agora você tem um usuário secundário tendo acesso limitado de seu banco de dados, provavelmente ele vem sem NENHUM acesso, você terá que SETAR todos acessos

 

 

Como usar ele? Fácil, nas configs.php ao invés de colocar o normal (root, senha) coloque (rootsecundário, senha), porque aí pela injection o cara não tem acesso ilimitado a seu banco de dados

 

 

 

Explicação:

 

Mas se ele tem acesso limitado, como meus players vão criar suas contas e ver o ranking?

Fácil caro amigo, pelo manage users, você abre a database que terá os acessos e coloque eles de acordo com a função

Mas eu não sei nada de QUERY como SELECT, INSERT, UPDATE, e blá blá blá!

Ah meu filho, aí é com você agora, entre na script a ser usada pelo site e VEJA a query a ser usada pela script, geralmente tem assim:

 

mysql_query (INSERT blá blá blá)

 

Opa agora você tem 1 pista, o código usado é INSERT, procure agora a tabela que esse script irá usar e abra um acesso para INSERT na tabela (se quiser melhor ainda, abra um INSERT para um ÚNICO field ou campo)

Eu tenho preguiça o que eu faço?

Simplismente procure um jogo para se divertir, e esqueça de criar servidores.

 

Então é isso pessoal, mais uma das minhas explicações, essa foi sobre SEGURANÇA, e ver seu site hackeado não é legal, e eu já tive essa experiência mas achei a cura com livros e google.

 

Créditos: Cassiano Guerra

 

Até mais!

 

COMPLEMENTANDO:

 

Geralmente as scripts usam o SELECT, ou melhor, quase SEMPRE, então, você pode setar o acesso SELECT para TODAS as tabelas (isso cabe a você o que deve fazer), porque o comando SELECT só seleciona, e o que um hacker pode fazer só selecionando uma conta? Ela tem senha codificada, nem se ele quisesse descobrir a senha ele conseguiria, então é isso, mas um dos meus conselhos hahahaha

Editado por Cassiano Guerra

www.l2pallas.com

35x

NPC's Buffers

Drop de S e Apella

Sem custom

Interlude C6

Link para o comentário
Compartilhar em outros sites


Erradasso, não existe Mysql injection e sim SQL injection, sql é a linguagem quase* que universal dos banco de dados e Mysql é um tipo de banco de dadso.

 

O sql injection é uma falha explorada na aplicação que qexecuta a query que pode ser em qualquer linguagem de programação (java, php ,asp , vb, c...)

 

exemplo:

 

SELECT * FROM usuarios WHERE login = '$variavel_login AND senha = '$variavel_senha'

 

E na minha app os textboxes login e senha vão setar as variaveis conforme o exemplo:

 

$variavel login = admin

$variavel senha = senha_admin

 

resultando em:

 

SELECT * FROM usuarios WHERE login = 'admin' AND senha = 'senha_admin'

 

Ateh ai ta tudo certo, mas tenho que fazer um tratamento na minha aplicação pra evitar que alguém faça isso:

 

$variavel login = admin (ou algum outro usuario que exista ou conheça)

$variavel senha = qualquer_merda' OR 'x'='x

 

resultando em um bug que vai fazer a autenticação apesar da senha errada:

 

SELECT * FROM usuarios WHERE login = 'admin' AND senha = 'qualquer_merda' OR 'x'='x'

 

melhorando a visao do que vai dar:

 

SELECT * FROM usuarios WHERE login = 'admin' AND senha = 'qualquer_merda' OR 'x'='x'

 

=========================================================================

 

existem váarios tipos de caracteres que bugam a consultam eu servem de sql injection, por isso em cada aplicação se faz o devido tratamento, o mais famoso deles é o replace dos caracteres: ,#,\*,-- ,\\\\)/ (existem muuitos além desses, cos comandos de sql: from,select,insert|delete,where,drop table,show tables ,

 

O TRIM (que limpa os espaços vazios), o Strip Tags (do php), que limpa as tags html e php dos campos e o addslashes que troca a aspas (') por barra (/) para evitar a inejction mais cara de pau que existe rsrs..

 

 

Resumindo: a segurnaça anti sql injction não se faz no banco de dadso e sim na sua aplicação.

 

Créditos: Lars.

 

espero ter ajudados e esclarecido as possíveis dúvidas

sign.jpg

<strong><em>Ustiur Games</em> - Lineage 2 Gracia Epilogue private server</strong> coming soon

<strong>http://www.ustiur.com</strong>

Link para o comentário
Compartilhar em outros sites

O TRIM (que limpa os espaços vazios), o Strip Tags (do php), que limpa as tags html e php dos campos e o addslashes que troca a aspas (') por barra (/) para evitar a inejction mais cara de pau que existe rsrs..

 

Só corrigindo, o addslashes troca por barras invertidas (\), que são chamadas de caracteres de escape.

 

 

Estas funções do PHP addslashes(), strip_tags() já estão obsoletas para o uso neste caso.

 

O PHP fornece uma função que faz isso, e é específica para MySQL.

 

Veja:

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Disponível a partir do PHP5.

 

 

Caso o seu PHP não tenha habilitado esta função, eu aconselho o uso da seguinte combinação:

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

 

Mas eu aconselho mesmo o uso de expressões regulares.

 

Até mais.

Editado por _Dudu_1533

logo.png

Link para o comentário
Compartilhar em outros sites

Vai uma função ai contra SQL INJECTION =)

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

depois é so manda rodar ela em alguma string sua tpw login ou no cadastro

$valida = Injetor($login);

if ($valida == 1){

echo "Você inseriu comandos proibidos.";

}else{

echo "Seu login esta correto";

}

 

mais tambem sempre use o tal do addslashes (esqueci o nome é algo assim =X)

Editado por WilliamArcher

Configuro Dedicado LINUX (Ubuntu) para L2jFrozen (SEM LAG)!!!!
-> www.l2high.com.br <-

Link para o comentário
Compartilhar em outros sites

Só corrigindo, o addslashes troca por barras invertidas (\), que são chamadas de caracteres de escape.

 

 

Estas funções do PHP addslashes(), strip_tags() já estão obsoletas para o uso neste caso.

 

O PHP fornece uma função que faz isso, e é específica para MySQL.

 

Veja:

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Disponível a partir do PHP5.

 

 

Caso o seu PHP não tenha habilitado esta função, eu aconselho o uso da seguinte combinação:

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

 

Mas eu aconselho mesmo o uso de expressões regulares.

 

Até mais.

 

 

Muito bom Dudu, mas estamos falando de SQL inejection em geral, esta classe é especifica do php pro mysql, se houver pra outros banco de dados ótimo!

os exemplos que eu dei foram do php 4, mas sites de linage e como qualquer outro site ainda pode ser feitos em php 4 neh?

e a falha pode ser explorada no asp, java, .net, delphi... sebdo assim raciocínio lógico de bloqueio permanece.

 

Gostei dessa classe, muito interessante, apesar de eu não ter muito interessem em php :B

Editado por LARS

sign.jpg

<strong><em>Ustiur Games</em> - Lineage 2 Gracia Epilogue private server</strong> coming soon

<strong>http://www.ustiur.com</strong>

Link para o comentário
Compartilhar em outros sites

ta certo sim... a maioria do pessoal cria servidor e nem ta ai pra senha de banco de dados que é padrao o root sem senha!! e é hackiada e fica chorando pelos cantos!!

 

como eu disse pra um monte de gente no msn!!

 

Faça as coisas sabendo o que vc ta fazendo!!

 

pq tem gente que pega qualquer coisa na net e quer editar!!

 

um cara vai la faz um código de 500 linhas vai um outro em 10 faz melhor do cara que fez de 500

Configuro Dedicado LINUX (Ubuntu) para L2jFrozen (SEM LAG)!!!!
-> www.l2high.com.br <-

Link para o comentário
Compartilhar em outros sites

Resumindo, pra evitar isto, sempre será necessário um tratamento, independente da linguagem que for programar e das classes que existem para serem usadas nas mesmas.

 

E cassiano, em muitos tutoriais, que vi (na minha época: c3 e c4 . rsrs é sou velho xDD), dxavam o login root e senha root, ou sem senha rsrs, isso torna bem fácil a invasão xD.

Outra forma de evitar isso é configurando o mysql pra aceitar acesso apenas local (não remoto).

 

Pode chamar isto que você explicou de método de segurança, mas de: anti MySQL Injection é errado ;D

Editado por LARS

sign.jpg

<strong><em>Ustiur Games</em> - Lineage 2 Gracia Epilogue private server</strong> coming soon

<strong>http://www.ustiur.com</strong>

Link para o comentário
Compartilhar em outros sites

Bom.

 

Mas sobre este negócio de bloquear o MySQL para acesso remoto eu discordo.

Eu já postei várias respostas aqui no fórum, explicando que não é um método inseguro.

 

A maioria acha que liberando o MySQL remoto, todos conseguirão conectar, mas não, você pode liberar somente um IP para conectar ao MySQL.

 

Tem uma query que faz isso, garantindo os privilégios.

 

GRANT ALL PRIVILEGES ON *.* TO root@'IP_LIBERADO' IDENTIFIED BY 'Sua_senha';

 

Até mais.

logo.png

Link para o comentário
Compartilhar em outros sites

  • 11 months later...

EI DUDU oque faço pra aumentar a segurança do meu banco de dados?

do nada destroiram meu banco hj

tava tudo perfeito como sempre e do nada cai tudo dando 1 ERRO medonho no meu characters

Sofri ameaça de 1 cara de que meu server era DOWN então concerteza foi ele.

oque faço pra aumentar a segurança?

SITE fica em 1 HOSPEDAGEM

DEDICADO fica em outra!

Link para o comentário
Compartilhar em outros sites





×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.