2016-06-09 6 views
0

Ich versuche, eine SQL-Abfrage mit Javascript mit einer Variablen aus einer Eingabe stammen. In dieser Eingabe Zeichen wie '. Und "zusammen mit anderen eingegeben werden kannEscape-Sonderzeichen in Javascript SQL-Abfrage

Hier ist, was mein Script-Funktion wie folgt aussieht:

function insertJobDesc (r) { 
     rowid=r; 
     var qty = document.getElementById('Qty' + r).value; 
     var desc = document.getElementById('Desc' + r).value; 
     desc = desc.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, '"&quot;"').replace(/'/g, '"&#039;"'); 

     sendAsync("editDatabase.php?sql=UPDATE+jobdesc+SET+qty="+qty+",+description='"+desc+"',+rowID="+rowid+"+WHERE+id="+rowid+"+AND+jobID="+jobID); 
    } 

Ein Beispiel für den Wert für‚desc‘, die ich wollen würde zu senden ist: 80-0234-1 6'5 "GATE So ist es eine Kombination aus Zahlen, Buchstaben und Sonderzeichen. Ich habe versucht, jeden von ihnen zu ersetzen, aber es hat nicht geklappt.

Irgendwelche Ideen?

+0

Diese gefährliche und stumm ist. Sie legen Datenbankinformationen offen, die es jedem erlauben würden, Ihre gesamte Tabelle zu löschen. SQL-Abfragen werden im Browser nicht angezeigt. Kompilieren Sie sie auf dem Server nur mit den gesendeten Formularwerten, und überprüfen Sie die gesendeten Werte. – charlietfl

+0

@charlietfl Ich bin nicht so besorgt über irgendwelche Probleme mit der Injektion, da die Site nur von einigen wenigen im lokalen Netzwerk verwendet wird. – Eksepshon

+0

Noch immer kein Grund, es so zu machen. Eine Person kann eines Tages verärgert werden. Es macht keine einfachere Coding-Abfrage im Browser vs auf dem Server und Sie haben keine Möglichkeit, die Eingabe auf diese Weise zu validieren – charlietfl

Antwort

0

Verwenden encodeURIComponent()

function insertJobDesc (r) { 
    rowid=r; 
    var qty = document.getElementById('Qty' + r).value; 
    var desc = encodeURIComponent(document.getElementById('Desc' + r).value); 

    sendAsync("editDatabase.php?sql=UPDATE+jobdesc+SET+qty="+qty+",+description='"+desc+"',+rowID="+rowid+"+WHERE+id="+rowid+"+AND+jobID="+jobID); 
} 

Haftungsausschluss: Nicht immer so etwas tun ...

+0

Der beste Teil dieser Antwort war der Disclaimer, so dass man definitiv die akzeptierte Antwort ist. – Eksepshon