Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É bom usar htmlspecialchars() antes de inserir no MySQL?


Como outros já apontaram, #2 é a resposta correta. Deixe-o "cru" até precisar dele, então escape apropriadamente.

Para elaborar o porquê (e vou repetir/resumir os outros posts), vamos levar o cenário 1 ao seu extremo lógico.

O que acontece quando alguém insere " ' OR 1=1 <other SQL injection> -- ". Agora talvez você decida que porque você usa SQL você deve codificar para SQL (talvez porque você não usou instruções parametrizadas). Então agora você tem que misturar (ou decidir) codificação SQL e HTML.

De repente, seu chefe decide que também quer uma saída XML. Agora, para manter seu padrão consistente, você também precisa codificar isso.

Próximo CSV - oh não! E se houver aspas e vírgulas no texto? Mais fuga!

Ei - que tal uma interface AJAX interativa agradável? Agora você provavelmente quer começar a enviar JSON de volta para o navegador, então agora {, [ etc. tudo precisa ser levado em consideração. AJUDA!!

Então, claramente, armazene os dados conforme fornecido (sujeito às restrições de domínio, é claro) e codifique apropriado para sua saída no momento em que você precisar . Sua saída não é igual aos seus dados.

Espero que esta resposta não seja muito condescendente. Crédito aos demais respondentes.