Ir para conteúdo
Fórum Script Brasil
  • 0

Anti injection


vini_loock

Pergunta

Olá,

estou fazendo uma classe para trabalhar de forma mais fácil com banco de dados.

Dei uma pesquisada nas funções anti injection, mas elas não permitem algumas palavras, eu pensava que se eu transformasse qualquer valor em string já resolveria.

Agora estou em dúvida, se eu manter um padrão assim:

SELECT * FROM campo = 'valor'

Onde todos os valores vão estar entre aspas simples, e para validar essa string, eu trocaria as aspas simples(') por \'

Isso seria o suficiente?

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Então.. eu já até pensei em usar PDO, mas nunca a usei e vi que é um pouco complicado e eu tenho que ter esse e outros códigos prontos na quarta-feira, então ficaria inviável eu estudar alguma coisa do PDO e desenvolver uma classe em cima dela;

Pretendo que seja de uso fácil, um exemplo seria:

<?php
$db = new Database();
$db->query("SELECT * FROM table campo = '$1'", $valor);
while($db->fetch()){
...
}
Já havia escrito uma classe semelhante, mas ela não tem a função anti inject, porque era coisa bem básica, agora estou reescrevendo de uma forma mais segura, o problema é que eu não poderia bloquear palavras como where, tava pensado em escapar as aspas e só. Existe algum problema de fazer algo como:
$str = str_replace("'", '\'', $str);

$db->query("SELECT * FROM table WHERE campo = '$1'", $str);

Link para o comentário
Compartilhar em outros sites

  • 0

private function string_anti_inject($str){
            return (string) str_replace(array('"', "'"), array("\"", '\''), $str));
        }

Nem todo sql injection usa aspas...
Mas como assi?

Se não usar aspas, o valor não continuará sendo tratado como string?

Editado por vini_loock
Link para o comentário
Compartilhar em outros sites

  • 0

Não adianta muito, porque ela não faz mais parte do php e ela simplesmente escapa a string, o mesmo que eu fiz na minha função.

O que eu quero saber, é se pode ser feita uma injection, mesmo eu transformando isso em uma string, colocando-a entre aspas simples e escapando todas as aspas e apóstrofos??

Editado por vini_loock
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...