"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > mysql_real_escape_string é suficiente para impedir a injeção de SQL?

mysql_real_escape_string é suficiente para impedir a injeção de SQL?

Publicado em 2024-12-21
Navegar:535

  Is mysql_real_escape_string Enough to Prevent SQL Injection?

Erros a serem evitados com mysql_real_escape_string

Apesar de ser um método comumente usado para prevenir injeção de SQL, mysql_real_escape_string pode falhar na proteção contra ataques se utilizado incorretamente . Embora escape eficientemente de caracteres especiais em valores de string, certos cenários podem surgir onde sua eficácia é comprometida. inserir conteúdo de texto entre aspas em instruções SQL. Por exemplo:

$value = mysql_real_escape_string($value, $link); $sql = "... `foo` = '$value' ...";

Usos incorretos

$value = mysql_real_escape_string($value, $link);
$sql = "... `foo` = '$value' ...";

Usá-lo em contextos não citados (por exemplo, ... column_name = $value ...)

Aplicá-lo a valores que não sejam de string (por exemplo, entradas numéricas)

Aplicação incorreta fora de contextos SQL (por exemplo, $sql = mysql_real_escape_string("... foo = '$value' ..."))
  • Considerações sobre codificação
  • Outra armadilha é configurar incorretamente a codificação da conexão do banco de dados. O método correto é:

mysql_set_charset('utf8', $link);No entanto, usar mysql_query("SET NAMES 'utf8'", $link) pode causar discrepâncias entre as APIs mysql_ codificação assumida e a codificação real do banco de dados. Isso pode potencialmente permitir ataques de injeção envolvendo strings multibyte.

Conclusão
mysql_set_charset('utf8', $link);

mysql_real_escape_string continua sendo uma ferramenta valiosa se usada como pretendido. Porém, reconhecer suas limitações e aplicá-lo corretamente é essencial para evitar vulnerabilidades de injeção de SQL. Recomenda-se explorar alternativas mais modernas, como declarações preparadas para maior segurança e facilidade de uso.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3