Ich habe ein Problem und ich habe keine Ahnung, wie Sie es beheben. Ive ein Modul auf meiner Website, die einige Daten zeigt, verwendet es jquery dom und es erstellt einige Elemente aus einem Javascript-Array, das JavaScript-Objekte enthält. Dieses Array wird mit PHP generiert und ruft die Daten aus einer Postgres-Datenbank ab.jQuery, Javascript Array/Objekt SQL Injection Ausgabe
Wenn also ein Benutzer versucht, die Datenbank zu injizieren, speichert die Datenbank die Zeichenfolge als einen normalen Eintrag, ich habe keine Probleme damit. Das Problem tritt auf, wenn ich den Inhalt auflisten möchte. Aber nur auf der Client-Seite. Die Auflistung ist fertig, ich habe die Zeichenfolge generiert, ich übergebe sie an die Client-Seite, die Dom-Elemente werden erstellt, aber sie haben keinen Inhalt. Ich benutze die PHP-Funktion addslashes(), um die Escape-Zeichen zu entkommen, aber ich bekomme nur Ärger.
So, hier ist das Array
[
{"id": "26", "text": "RSS Feed collection"},
{"id": "50", "text": "\\ \' "}
]
Wie Sie das letzte sehen kann, enthält die Testinjektion
bearbeiten
HTML-Code:
<div class="item">
<span>Text</span>
</div>
Dies erzeugt wird jQuery verwenden.
JS Teil:
var myArray = [the upper array];
var container = $("#container");
for(nI=0, nC = myArray.length; nI<nC; nI++) {
var currentObj = myArray[nI];
var newItem = $("<div />").appendTo(container);
$("<span />").appendTo(item).html(currentObj.text);
}
Und das Ergebnis ist nichts sichtbar, das Array sieht gut aus, aber jeder Ort, an dem normalerweise der Text sein sollte, ist leer. Die Frage ist warum?
Was? Wo passiert das Problem der Injektion? Sie müssen dies neu formulieren, es ergibt keinen Sinn. – profitphp
Ok, wahr! Die Injection erfolgt also nicht, weil ich sie mit der Funktion pg_escape_string() vermeide, damit die eingehenden Daten so gespeichert werden, wie sie in die db gehen. Das Problem ist mit der Auflistung. Es erzeugt die dom-Objekte, aber ich bekomme nichts in das Beschriftungsfeld. Ich bearbeite meinen ursprünglichen Beitrag, um dir die Struktur zu zeigen. –