Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le bon encodage / échappement / entités html nécessaires lors de l'envoi de données de js à php, php à mysql et pour les réponses REST json

Chaque fois que j'utilise php/mysql/jquery pour transmettre des données dans les deux sens, je finis par utiliser la combinaison suivante d'encodages/échappements, et cela semble bien fonctionner pour moi.

1) vous n'avez rien à faire ici, SAUF si vous envoyez une URL (je pense que ce n'est que pour les requêtes GET) - mais si vous envoyez une URL, vous devez utiliser encodeURIComponent(url), qui s'échappera correctement les &'s et les caractères spéciaux dans l'url (en savoir plus ici ).

2) Utilisez mysqli et les paramètres liés, il fera tout l'échappement pour vous (lisez à ce sujet ici )

3) J'utilise toujours ceci lors de l'écho de données dans un fichier HTML :

<?php
  htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>

Cela encodera correctement tous les caractères spéciaux (le faux est pour "pas de double encodage"). Assurez-vous également que les balises méta UTF-8 appropriées sont en haut de vos pages html.

4) L'utilisation de json_encode doit toujours échapper correctement vos données, mais j'utiliserais le code du n ° 3 juste pour m'en assurer. Mais vous n'en aurez probablement besoin que si vous renvoyez des données contenant des caractères spéciaux.