2017-12-03 9 views
0

Ich freue mich auf an article und auf das Schreiben von Assistenten in React, und jeder Schritt wird mit einer URL verknüpft. Der Autor verwendet den "hash" -Teil der URL, um den Schritt anzugeben, und weist ihn this.state.currentStep zu. Sie kommentieren, dass dies unsicher ist.Ist es unsicher, einen URL-Hash-Parameterwert direkt einer JavaScript-Variablen zuzuweisen?

class BasicWizard extends React.Component { 
    constructor() { 
    this.state = { 
     steps: [] 
     currentStep: location.hash //obvs this is an unsafe way to do this -- this example is for conceptual purposes only 
    }; 
    } 

Meine Frage:

warum ist dies unsicher? Meine Vermutung ist, dass es eine XSS-Gefahr ist, aber würde diese Eingabe nicht durch React in eine Zeichenfolge umgewandelt werden? So wie ich das sehe, wäre das nur unsicher, wenn ich irgendwo irgendwo einen Namen hätte.

Wenn es unsicher ist: Wie man sicher macht?

Antwort

1

Location.hash ist nicht unsicher, weil es nur eine Zeichenfolge zurückgibt. Siehe hier: https://www.w3schools.com/jsref/prop_loc_hash.asp

Also was macht es gefährlich? Es wird gefährlich, wenn Sie es gefährlich benutzen. Gefährliche Wege, es zu benutzen:

  • es Merge unescaped mit Ihrem HTML (_dangerouslySetInnerHTML)
  • Aufruf eval() auf es
  • Verwenden Sie diese Eingabe in einer SQL-Abfrage unescaped
  • ...

Aber etw. Akk. wie

if(location.hash === 'login') { 
} 

oder die Zuordnung zu einer Variablen ist nicht unsicher. Was Sie mit dieser Variablen machen, kann jedoch unsicher sein (siehe oben).

Verwandte Themen