Por que se preocupar em usar mysql_real_escape_string (), já que $ _post adiciona barras antes de uma cotação automaticamente?

StackOverflow https://stackoverflow.com/questions/1747677

Pergunta

No PHP, $ _Post Adicionar barras antes de uma cotação automaticamente, então por que se preocupar em aplicar MySQL_Real_escape_String ()? Por exemplo, quando eu insiro 'rrr em um campo de entrada, e eu fico \'rrr Quando eu ecoando.

Foi útil?

Solução

Porque isso só acontece se o Macigquotes estiver ativado na sua configuração de PHP, o que, até onde eu sei, é bastante incomum hoje em dia. Além disso, Mysql_real_escape_string também escapa a outros caracteres relacionados ao MySQL.

Verificação de saída http://php.net/manual/en/security.magicquotes.php Para mais informações sobre citações mágicas.

Como você pode ver, já há um aviso de depreciação para esta diretiva, então você deve verificar a configuração do seu servidor de qualquer maneira ^^

EDIT: Para desativar aspas mágicas, pesquise na sua pasta xampp para o php.ini e adicione ou altere se presente, as seguintes diretivas:

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

Outras dicas

  1. mysql_real_escape_string escapa mais do que apenas citações únicas, porque existem outros chars que podem causar problemas de injeção.
  2. O PHP adiciona apenas barras à entrada postada se Magic_quotes estiver ativado, o que é considerado uma prática ruim (porque leva à preguiça e a não usar coisas como real_escape_string!)

Citações mágicas foi obsoleto a partir de Php 5.3.0 e é obsoleto a partir de Php 6.0.

EDIT: Portanto, as barras automáticas não podem ser confiadas porque são preteridas pela maioria das instalações do PHP e em breve não funcionarão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top