Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Paulo

[ Mysql Injection ] Cadastro e Login PHP - MYSQL

Recommended Posts

Olá pessoas, tudo bem?

Tenho uma duvida cruel, to fazendo um sistema de login e cadastro de usuarios.

O usuario se cadastrara e logara utilizando seu nick name.

Meu medo é que um usuario cadastre um nick do tipo 'Sou'Zikaaa

Entenderão?

Quero uma função que não deixe acontecer o sql injection mais que também não atrapalhe depois por exemplo o usuario se cadastra utilizando aspas e depois aparece o nome sem aspas, ficaria estranho...

 

Podem me ajudar? Agradeço desde já! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a biblioteca PDO com prepared statements. Será o suficiente para garantir proteção contra SQL Injection.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode, então, utilizar MySQLi, que permite tanto código orientado a objetos como código estruturado.

O que você não pode fugir é de utilizar prepared statements, isso que lhe garantirá a proteção de SQL injection.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://php.net/manual/pt_BR/mysqli-stmt.bind-param.php veja um pouco mais abaixo a listagem que explica os Caracteres de Especificação de Tipo.

 

 

No mais:

 

O Prepared Statements parece um monstro no início por causa das incontáveis linhas extras no código, mas é a solução perfeita para evitar SQL Injection. Estude um pouco no Manual do PHP e busque mais tutoriais pelo Google se precisar, o Gabriel te deu a dica perfeita. Vale a pena o cansaço mental para aprender uma nova forma de programar, quando isso vai te evitar um possível 'problemão' no futuro.

 

E se você quiser resolver seu problema com o usuário colocar uma aspa e na hora de retornar os dados do SQL voltar COM a aspa corretamente, pode utilizar o addslashes(); para escapar tua string antes de enviá-la ao SQL.

 

Se quiser evitar determinados Nomes de Usuário indesejados, crie uma blacklist e compare o nick enviado com o array da BlackList. Se o nick enviado contiver quaisquer registros da sua BlackList, avise ao usuário que o nick escolhido não é permitido e mande-o escolher um novo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Define o tipo de valor que será atribuído. "s" no caso define que será uma string.

 

http://php.net/manual/en/mysqli-stmt.bind-param.php#refsect1-mysqli-stmt.bind-param-parameters

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://php.net/manual/pt_BR/mysqli-stmt.bind-param.php veja um pouco mais abaixo a listagem que explica os Caracteres de Especificação de Tipo.

 

 

No mais:

 

O Prepared Statements parece um monstro no início por causa das incontáveis linhas extras no código, mas é a solução perfeita para evitar SQL Injection. Estude um pouco no Manual do PHP e busque mais tutoriais pelo Google se precisar, o Gabriel te deu a dica perfeita. Vale a pena o cansaço mental para aprender uma nova forma de programar, quando isso vai te evitar um possível 'problemão' no futuro.

 

E se você quiser resolver seu problema com o usuário colocar uma aspa e na hora de retornar os dados do SQL voltar COM a aspa corretamente, pode utilizar o addslashes(); para escapar tua string antes de enviá-la ao SQL.

 

Se quiser evitar determinados Nomes de Usuário indesejados, crie uma blacklist e compare o nick enviado com o array da BlackList. Se o nick enviado contiver quaisquer registros da sua BlackList, avise ao usuário que o nick escolhido não é permitido e mande-o escolher um novo.

 

Cara perfeito, beleza eu adciono o addslashes() mais ai na hora de pegar isso do banco de dados ele vai mostrar certo com as aspas e sem as barras ou preciso usar alguma função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há necessidade em converter os dados com addslashes. Se utilizar prepared statements, os dados serão salvos e retornados corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.