2009-08-01 3 views
2

ok, beginne ich mit einer sehr einfachen Methode:Javascript Sicherheitsproblem

alert(someText); 

„sometext“ ist eine Variable, die Benutzer einen Wert in einer Form übergeben werden. Wird es eine Chance geben, dass der Benutzer folgenden Text übergibt und etwas Code in mein Javascript einfügt? Zum Beispiel kann der Benutzer dies in dieser Methode übergeben:

"anotherText"); alert („die nextText“

Wenn ja, wie kann ich es verhindern? wenn nicht, kann man eine gewisse Sicherheit besorgt über Javascript erwähnen?

Antwort

7

Nein, es nicht so funktioniert. String Werte werden nicht dort, wo sie eingesetzt werden ersetzt, sie werden als Strings nur verwendet, also kein Sicherheitsproblem ist

Das einzige Mal, wenn Sie über diese Sorgen zu machen kann, ist, wenn Sie verwenden eval:..

eval("alert(\" + someText + "\");"); 

(Ja, ich weiß, dies ist ein künstliches Beispiel ...)

4

Grundsätzlich, solange Sie nicht "eval" aufrufen (oder eine Funktion, die das tut), und Sie nicht Javascript von Benutzern erstellt injizieren direkt in Seiten (über das Skript-Tag), sollten Sie sich keine Sorgen machen.

2

Sobald Sie eine Variable in Javascript haben, wird es nicht viel ausmachen, es sei denn, Sie tun ein Eval oder setzen Sie die InnerHTML-Eigenschaft eines DOM-Elements mit ihm.

Abgesehen davon, hängt davon ab, wie Sie den Wert vom Formular zum Javascript erhalten, ob es ein Potenzial für die Injektion gibt.

Wenn zum Beispiel das Formular an den Server gesendet wird und der Wert der Variablen durch das Schreiben des Javascript auf der Serverseite festgelegt wird, könnte möglicherweise ein Problem auftreten. So etwas würde offensichtlich das Skript für die Injektion geöffnet lassen.

So ist es schwer zu sagen, ob Sie ein Sicherheitsproblem haben könnten, ohne zu wissen, wie Sie den Wert aus dem Formular erhalten. Nach meiner Erfahrung ist der serverseitige Code die Ursache für die meisten XSS-Vektoren. In Bezug auf Javascript müssen Sie in der Regel nur auf eval und innerHTML achten.

0

wenn "sometext" von Server gerendert wird, zB JSP, Geschwindigkeit, dann ist es gefährlich

zB

<script> 
    alert({{someText}}) 
</script> 

dann vor JavaScript-Laufzeit, während HTML-Analyse, es gefährlich ist,

Aber wenn "sometext" eine Javascript-Variable ist, ist @ Zifres Antwort richtig.

neben, außer "eval" Schlüsselwort, neue Funktion (sometext), location.href = sometext ...... kann einige Angriffe auslösen