Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou com uma duvida,usando as funções a seguir,me ajuda a proteger do sql injection ou ainda continuo vulnerável.
strip_tags(trim(addslashes(htmlspecialchars($variavel))));
Obrigado!
Não é uma boa ideia usar addslashes porque não é multibyte-safe, vai com o que Beraldo disse e use Prepared Statements que você nunca mais terá que se preocupar com SQL injection.
Se ainda sim quer usar uma função, se você está no mysql, a única opção segura é mysql_real_escape_string. O problema de usar função é que é muito fácil você se esquecer em algum momento.
Se ainda sim quer usar uma função, se você está no mysql, a única opção segura é mysql_real_escape_string. O problema de usar função é que é muito fácil você se esquecer em algum momento.
O problema neste caso é que a função citada não barra sql injection, já que nem todos os ataques dependem das aspas, que é a única coisa que é afetada pela função supracitada.
O problema neste caso é que a função citada não barra sql injection, já que nem todos os ataques dependem das aspas, que é a única coisa que é afetada pela função supracitada.
@ESerra Você fala do addslashes ou mysql_real_escape_string?
A única diferença entre o addslashes e o mysql_real_escape_string é que o segundo escapas as aspas e salva a string original no BD, já a primeira escapas as aspas e salva os dados com as barras no BD, ou seja, na práticas ambas fazem exatamente a mesma coisa no quesito "anti" sql injection.
mysql_real_escape_string também leva em consideração o charset do banco de dados, que é a razão do addslashes ser inseguro para escapar os dados.
Aqui tem um artigo demonstrando como efetuar o hack do addslashes, que não é possível com a função mysql.
>
mysql_real_escape_string também leva em consideração o charset do banco de dados, que é a razão do addslashes ser inseguro para escapar os dados.
Aqui tem um artigo demonstrando como efetuar o hack do addslashes, que não é possível com a função mysql.
Se você acha que isto é suficiente, ok... cada um acredita no que quer...
Não é questão de crença, só estou curioso em como mysql_real_escape_string é inseguro?
Na realidade, nunca usei mysql_real_escape_string em produção.
A melhor forma de se proteger contra SQL Injection é usando Prepared Statements
Leia mais sobre essa e outras técnicas neste meu artigo