Einfache Anführungszeichen in einer Zeichenfolge mit jQuery ajax

8

Ich bin auf ein Problem gestoßen, bei dem der Benutzer Daten eingibt, und wenn es überhaupt einfache Anführungszeichen gibt, ist das Skript fehlerhaft.

Was ist der beste Weg, um einfache Anführungszeichen, die Benutzer eingeben, zu behandeln, so dass es das jquery / javascript nicht stört?

UPDATE:

Ich sende es durch Ajax zu einer Datenbank. Hier ist der Datenparameter für einen Json-Ajax-Aufruf.
data: "{str_" + sectionName + " :'" + UpdateText + "',EntityID: '" + EntityID + "' }",
wobei update text die Zeichenfolge ist, die die Anführungszeichen enthalten kann.

    
Adam 04.12.2009, 04:51
quelle

8 Antworten

3

Sie können eine der vielen String.replaceAll-Implementierungen finden oder Ihre eigenen schreiben und einfach alle einfachen oder doppelten Anführungszeichen durch eine Escape-Version wie \ "oder \" ersetzen.

    
Jonathon Faust 04.12.2009, 05:05
quelle
21

Sie müssen die Anführungszeichen mit einem \ oder abhängig davon, wie Sie den String verwenden möchten, umgehen. Sie können die Funktionen javascript escape und unescape verwenden.

%Vor%

Sehen Sie auch nach, wie Sie Escapezeichenfolgen mit jQuery

knacken können     
mbrevoort 04.12.2009 05:02
quelle
3

Um Werte in der AJAX-Anfrage zu umgehen, Schreiben Sie nicht Ihre eigene Implementierung von escape oder verwenden Sie escape () -Methode. ( escape() ist veraltet) . Erstellen Sie stattdessen ein JSON-Objekt und verwenden Sie die Methode JSON.stringify .

Für Ihren Fall sollte es wie sein (ignorieren Sie dynamische Eigenschaft für jetzt) ​​:

%Vor%

Später in Ihrer Ajax-Anfrage können Sie tun:

%Vor%

Wenn Sie dynamische Eigenschaften mit Ihrem JSON-Objekt verwenden möchten, können Sie das Objekt für Ihren speziellen Fall in zwei Schritten erstellen:

%Vor%

Diese Vorgehensweise verhindert, dass Sie einzelne / doppelte Anführungszeichen und andere ungültige Zeichen manuell entfernen. JSON.stringify wird dafür sorgen.

(Ich bin hierher gekommen, um nach einem ähnlichen Problem zu suchen, konnte aber keine passende Arbeitslösung finden, deshalb habe ich hier eine hochgeladen)

    
Habib 29.03.2016 18:52
quelle
1

Da Sie AJAX erwähnt haben, besteht die Möglichkeit, dass die Strings, die einfache Anführungszeichen enthalten, auf der Serverseite zurückgewiesen werden. Stellen Sie sicher, dass Sie escape string function , beispielsweise per PHP, vor dem Einfügen von Strings in die Datenbank verwenden.

%Vor%

Dies hilft dabei, einzelne oder doppelte Anführungszeichen zu umgehen, die in der Zeichenfolge '$ user_name' vorkommen können. Es verhindert auch jede Art von SQL-Injektion atacks!

    
Nuhman 26.10.2016 14:44
quelle
0

Sie sollten Ihre Eingabe in Ihrem serverseitigen Skript aus verschiedenen Gründen wirklich bereinigen. Wenn Sie nur alles anzeigen, was der Benutzer eingibt, kann Ihre Anwendung wahrscheinlich zum Starten eines Cross-Site-Scripting-Angriffs verwendet werden.

    
Cfreak 04.12.2009 05:05
quelle
0

Javascript hat dafür eine eingebaute Methode, die mehr als nur einfache Anführungszeichen umfasst. Es heißt encodeURIComponent, von Javascript Kit :

  

Wird verwendet, um den Parameterbereich eines URI für Zeichen mit besonderer Bedeutung zu codieren, um sie von reservierten Zeichen wie "& amp;" Diese fungieren als Schlüssel / Wert-Trennzeichen. Umfassender als encodeURI () kodiert es alle Zeichen mit besonderer Bedeutung in einer URL-Zeichenfolge, einschließlich "=" und "& amp;". Verwenden Sie diese Methode nur für den Parameterabschnitt eines URIs. Andernfalls ist der URI möglicherweise nicht mehr gültig, wenn er eines der Zeichen enthält, die Teil eines gültigen URI sind (z. B. "+") und dennoch als Teil des URI-Parameters maskiert werden sollte.

Also sollte Ihr Code werden:

%Vor%

Ich kodiere alles, was ich in einer Abfragezeichenkette sende, um sicher zu sein, aber das Kodieren der EntityID könnte wohl übersprungen werden, weil es nicht vom Benutzer kommt (ich nehme an), also wissen Sie, dass es keine Sonderzeichen hat .

    
Tilendor 03.03.2010 17:28
quelle
0

Dank mbrevoort, Ich erarbeite mehr über seine Antwort

Wenn Sie in einer Abfrage ein einfaches Anführungszeichen senden: empid="T'via" empid = escape (empid)

Wenn Sie den Wert mit einem einfachen Anführungszeichen erhalten var xxx = request.QueryString ("empid") xxx = unscape (xxx)

Wenn Sie den Wert, der ein einzelnes Anführungszeichen enthält, in einer Abfrage suchen / einfügen wollen xxx = Ersetzen (empid, '' "," '' ")

    
BehranG BinA 22.11.2012 05:09
quelle
0

Um ein einzelnes Zitat in Javascript zu vermeiden, verwenden Sie

%Vor%

Um alle einfachen Anführungszeichen zu umgehen, verwenden Sie

%Vor%     
Chloe 08.09.2015 03:06
quelle

Tags und Links