Christian Kruse: Variablenübergabe in ein Javascript

Beitrag lesen

Moin Quincunx,

Warum sollten Daten javascriptgerecht aufbereitet in einer Datenbank liegen?

Zum einen mögen MSSQL-db keine „'“, […]

Ich habe zwar nicht die meiste Erfahrung mit MSSQL, aber ich weiß, dass sie unter Verwendung der bekannten Escaping-Mechanismen (MS SQL verhält sich hier Standard-Gemäß, ein ' wird also mit einem weiteren ' escaped: '' ergibt in dem String in der Datenbank hinterher ein einzelnes ') ohne Probleme verwendet werden können.

= Fehler 500 und mit den MSSQL-Views werden die Daten so ausgegeben wie ich sie brauche, sie kommen aufbereitet aus der db.

Auch hier stimmt etwas nicht oder ich verstehe deine Aussage nicht richtig. Du willst für die Ausgabe eines Werts nach JavaScript extra eine View machen, die dir das Escaping abnimmt? Klingt für mich nicht plausibel, Views sind eigentlich nicht dazu gedacht. Und es macht die Sache nun wirklich massiv komplizierter.

Zweitens sind „escape && unescape“ deprecated, verwende ich nicht mehr.
Bei einem Vorname den ich in meinem  Beispiel var vname = '<%= rs("vname") %>'; ausgeben würde, wüsste ich nicht was mir noch Schwierigkeiten bereiten könnte.

Du wechselst den Kontext, wenn du JavaScript erzeugst. Das bedeutet, sämtliche Steuerzeichen, die in JavaScript in Strings genutzt werden, müssen escaped werden. Selbst wenn ich keine böswilligen Absichten habe kann sonst etwas kaputt gehen: wer sagt schießlich, dass ein Name kein ' enthalten darf?

D.h. du musst, wenn du einen JS-String erzeugst, beachten, dass mindestens ', \ und " escaped werden, damit du das richtige Ergebnis erzielst.

LG,
 CK