Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist die richtige Kodierung/Escapezeichen/HTML-Entitäten, die benötigt werden, wenn Daten von js an php, php an mysql und für REST-json-Antworten gesendet werden?

Immer wenn ich php/mysql/jquery verwende, um Daten hin und her zu übertragen, verwende ich am Ende die folgende Kombination von Codierungen/Escapezeichen, und es scheint für mich gut zu funktionieren.

1) Sie müssen hier nichts tun, es sei denn, Sie senden eine URL (ich denke, dies ist nur für GET-Anforderungen) - aber wenn Sie eine URL senden, müssen Sie encodeURIComponent (url) verwenden, die ordnungsgemäß maskiert wird die &'s und Sonderzeichen in der URL (mehr dazu hier ). ).

2) Verwenden Sie mysqli und gebundene Parameter, es erledigt das ganze Escape für Sie (lesen Sie darüber hier )

3) Ich verwende dies immer, wenn ich Daten in eine HTML-Datei echoe:

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

Dadurch werden alle Sonderzeichen richtig codiert (falsch steht für „keine doppelte Codierung“). Stellen Sie außerdem sicher, dass Sie die richtigen UTF-8-Meta-Tags oben auf Ihren HTML-Seiten haben.

4) Die Verwendung von json_encode sollte Ihre Daten immer richtig maskieren, aber ich würde den Code aus #3 verwenden, nur um sicherzugehen. Aber Sie werden es wahrscheinlich nur brauchen, wenn Sie Daten mit Sonderzeichen zurückgeben.