Jump to content
Fórum Script Brasil
  • 0

Anti injection


vini_loock

Question

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 to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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?

Edited by vini_loock
Link to comment
Share on other 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??

Edited by vini_loock
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...