Ich habe eine Suchseite (search.php), die eine AJAX Last ruft und lädt die Ergebnisse in die #myresults DIV:AJAX, PHP, JSON & Query Strings: Wie können Variablen sicher und effizient weitergegeben werden?
$('#myresults').load('results.php', {"q":"<?php echo urlencode($this->params['url']['q']); ?>","min":<?php echo urlencode($this->params['url']['min']); ?>,max:<?php echo urlencode($this->params['url']['max']); ?>});
Die Abfragezeichenfolgeflag wie folgt aussieht:
http://www.mydomain.com/search?q=test&min=50&max=100
results.php Aussehen wie folgt:
if (isset($data['q']) && isset($data['min']) && isset($data['max'])) {
$q = urldecode($data['q']);
$min = urldecode($data['min']);
$max = urldecode($data['max']);
}
Ich nehme die Querystring-Werte und poste sie dann auf der Ergebnisseite. Ist URLEncode erforderlich oder sollte ich htmlspecialchars() verwenden? Ich habe JSON.stringify() gesehen und bin mir einfach nicht sicher, wie ich meine Daten "am besten" kodiere (so dass sie nicht von denjenigen, die den Querystring manipulieren, "gebrochen" werden können) und sie sicher zum Backend zur Verwendung veröffentlichen kann in meinem Backend PHP-Code. Ich bin am meisten besorgt über Apostrophe und Zitate, wie gehe ich damit um?
Aber dies ist kein normaler POST, nicht wahr? Was ist, wenn ein Benutzer Anführungszeichen in der Abfragezeichenfolge hat? Dann ist die JSON-Datenzeichenfolge unterbrochen: 'code'' q:" Php echo $ this-> params ['url'] ['q'];?> " – ews2001
Ihre Frage ist also, wie Sie nutzergenerierte Strings sicher in ein JSON-Objekt implementieren können? Ich denke, addslashes() wäre genug. – rednaw
Ich endete mit addslashes() und es scheint zu funktionieren wie erwartet. – ews2001