Jump to content

Recommended Posts

Posted (edited)

Boas, tenho andado a tentar arrnjar uma maneira de tentar limpar minimamenteas minhas queries para que os utilizadores nao insiram algo tao basico como : ‘ OR ’1′ = ’1 ou ‘; drop table users;

Só que não estou a conseguir porque eu uso MSSQL e não existe a função

mysql_real_escape_string

para MSQL. Tentei usar PDO's mas também não têm o driver para MSSQL.

Existe alguma outra maneira de limpar as queries minimamente? Não preciso nada de muito elaborado..

Edited by nunolevezinho
Posted

Olá, a função

mysql_real_escape_string

não é uma função do sql, mas sim do php! Exemplo

<?php

$nome =  mysql_real_escape_string($_POST['nome']);

$query = 'SELECT * FROM tb_users WHERE nome = ' . $nome;
Posted (edited)

Olá, a função

mysql_real_escape_string

não é uma função do sql, mas sim do php! Exemplo

<?php

$nome =  mysql_real_escape_string($_POST['nome']);

$query = 'SELECT * FROM tb_users WHERE nome = ' . $nome;

Então devo estar a fazer alguma coisa mal porque já experimentei isto:

$var = "Mc'Donalds";
echo "Var normal: ".$var."</br>";
$var = mysql_real_escape_string($var);
echo "Var protegida: ".$var;

Output:

Var normal: Mc'Donalds
Var protegida:

Edit: Tens a certeza que isso é funciona em MSSQL? Porque eu li umas coisas como:

Unfortunately, as of right now, PHP mssql extension neither supports parameterized queries nor has an escape function.

Edited by nunolevezinho
Posted (edited)

Então devo estar a fazer alguma coisa mal porque já experimentei isto:

$var = "Mc'Donalds";
echo "Var normal: ".$var."</br>";
$var = mysql_real_escape_string($var);
echo "Var protegida: ".$var;

Output:

Var normal: Mc'Donalds
Var protegida:

Edit: Tens a certeza que isso é funciona em MSSQL? Porque eu li umas coisas como:

Unfortunately, as of right now, PHP mssql extension neither supports parameterized queries nor has an escape function.

tenta assim não sei se é a mesma coisa ou não :

$var = "Mc'Donalds";
echo 'Var normal: '".$var."'</br>';
$var = mysql_real_escape_string($var);
echo 'Var protegida: '.$var;
Edited by brunoais
geshi!
Posted (edited)

tenta assim não sei se é a mesma coisa ou não :

$var = "Mc'Donalds";
echo 'Var normal: '".$var."'</br>';
$var = mysql_real_escape_string($var);
echo 'Var protegida: '.$var;

Não estás a entender amigo, para usar o mysql_real_escape_string preciso de uma conecção mysql activa, mas como já disse, eu uso mssql, é diferente e por isso ela nao funciona.

Por exemplo:

Dá este aviso porque eu uso mssql e nao mysql.

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to MySQL server on 'localhost' (10061)

Entendeste?

A minha duvida é se existe alguma outra função que faça algo parecido mas em mssql?

Edited by nunolevezinho
Posted

atenção podes também ter de fazer o replace ás " depende de como estás a usar o codigo

As minhas queries são do tipo:

$sql_query = "SELECT * FROM tabela WHERE campo1 ='$variavel' ";

No meu caso funciona certo?

Posted (edited)
Sim... à partida não há problema

Pelo contrário, à partida vai haver problemas...

A protecção pelo escape é tudo menos segura. Em concreto, esse exemplo é vulnerável a ataques em UTF-8: se $variavel for "¿'; DROP TABLE tabela; #", vais ficar sem a tabela.

Porquê? Porque, ao escapar a plica, vais inserir um caratere UTF-8, a saber ¿ + \ = 뽜. Podes proteger-te melhor usando as funções multibyte do PHP, mas existem ataques ainda mais complexos.

Só há duas maneiras de ficares completamente protegido de ataques SQLi: não usar SQL, ou usar prepared statments. Tudo o resto é, mais tarde, ou mais cedo, objecto de ataque bem sucedido.

Edited by mjamado

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Posted (edited)

Só há duas maneiras de ficares completamente protegido de ataques SQLi: não usar SQL, ou usar prepared statments. Tudo o resto é, mais tarde, ou mais cedo, objecto de ataque bem sucedido.

Usar stored procedures ou usar prepared statements. Isso de n usar SQL acho q n é útil... Acaba por ser como no caso do computador mais protegido é aquele q está desligado.

Qual?

Edited by brunoais
Um novo quote aparece....

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted (edited)
Isso de n usar SQL acho q n é útil... Acaba por ser como no caso do computador mais protegido é aquele q está desligado.

Peço desculpa, esqueci-me da tabuleta:

*--------*
| IRONIA |
*--------*
   ||
   ||
   ||
Edited by mjamado

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Posted (edited)

Usar stored procedures ou usar prepared statements. Isso de n usar SQL acho q n é útil... Acaba por ser como no caso do computador mais protegido é aquele q está desligado.

Qual?

Esta por exemplo:

I would suggest start using PDO. this way you could use parametrized query which will take care of almost everything for you including SQL injection plus it supports a very large RDBMS including MSSQL.

Here are some of the topic to get you started.

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

http://www.php.net/manual/en/book.pdo.php

Edited by johnmaia
Posted

Esta por exemplo:

Só que não estou a conseguir porque eu uso MSSQL e não existe a função

mysql_real_escape_string

para MSQL. Tentei usar PDO's mas também não têm o driver para MSSQL.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. 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.