Por que se preocupar em usar mysql_real_escape_string (), já que $ _post adiciona barras antes de uma cotação automaticamente?
-
20-09-2019 - |
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.
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
- mysql_real_escape_string escapa mais do que apenas citações únicas, porque existem outros chars que podem causar problemas de injeção.
- 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.