JavaScript kann als Tool für Hacker verwendet werden, um Websites anzugreifen. Das Injektieren von böswilligen Skripten von JS (JavaScript) ist eine der Methoden. Lassen Sie uns also lernen, wie Sie JS -Injektionsangriffe verhindern können? Das Folgende ist eine gute Aussage: Teilen Sie mit Ihnen:
Was ist ein JavaScript -Injektionsangriff?
Immer wenn Sie Inhalteeingaben von einem Benutzer akzeptieren und es neu sparen, ist die Website anfällig für JavaScript -Injektionsangriffe. Schauen wir uns eine bestimmte Anwendung an, die anfällig für JavaScript -Injektionsangriffe ist. Angenommen, eine Kundenfeedback -Website wurde erstellt. Kunden können die Website besuchen und Feedback -Informationen zum Produkt eingeben. Wenn ein Kunde Feedback einreicht, werden die Feedback -Informationen auf der Feedback -Seite wieder aufgenommen.
Kundenfeedback -Website ist eine einfache Website. Leider ist diese Website anfällig für JavaScript -Injektionsangriffe.
Angenommen, der folgende Text wird in das Kundenfeedback -Formular eingegeben:
<Script> alert ("boo!") </script>
Dieser Text stellt ein JavaScript -Skript dar, das das Warnmeldungsfeld anzeigt. Nachdem jemand dieses Skript dem Kundenfeedback -Formular eingereicht hat, den Message Boo! zeigt einen Angriff, wenn jemand in Zukunft die Kundenfeedback -Website besucht. Sie können auch denken, dass andere nicht in der Lage sein werden, es durch JavaScript -Injektionsangriffe zu zerstören.
Jetzt kann Ihre erste Reaktion auf JavaScript -Injektionsangriffe darin bestehen, sie zu ignorieren. Sie könnten denken, dass JavaScript -Injektionsangriffe nichts anderes als harmlos sind, und leider sabotieren Hacker, indem sie JavaScript in ihre Websites injizieren. Ein JavaScript-Injektionsangriff kann verwendet werden, um Skript- (XSS-Angriffe) auszuführen. Bei einem seitens-site-Skriptangriff können vertrauliche Benutzerinformationen gestohlen und an eine andere Website gesendet werden.
Beispielsweise können Hacker JavaScript -Injektionsangriffe verwenden, um Cookies -Werte aus den Browsern anderer Benutzer zu stehlen. Wenn sensible Informationen (wie Passwörter, Kreditkartenkonten oder Sozialversicherungsnummern) in Browser -Cookies gespeichert werden, können Hacker sie mithilfe von JavaScript -Injektionsangriffen stehlen. Wenn der Benutzer sensible Informationen in das Formularfeld der Seite eingibt und die Seite durch einen JavaScript -Angriff beeinträchtigt wird, kann der Hacker das injizierte JavaScript verwenden, um die Formulardaten zu erhalten und an eine andere Website zu senden.
Bitte achten Sie große Aufmerksamkeit. Nehmen Sie JavaScript -Injektionsangriffe ernst und schützen Sie die vertraulichen Informationen der Benutzer. In den nächsten beiden Abschnitten werden wir zwei Techniken erörtern, um zu verhindern, dass ASP.NET -MVC -Anwendungen durch JavaScript -Injektion angegriffen werden.
Methode 1: HTML -Codierung in der Ansicht
Eine einfache Möglichkeit, JavaScript -Injektionsangriffe zu verhindern, besteht darin, Daten zu codieren, die von jedem Website -Benutzer in HTML eingegeben wurden, wenn Daten in der Ansicht wieder entlastet werden.
Zum Beispiel: <%= html.code (feedback.message)%>
Was bedeutet die Verwendung von HTML, um eine Zeichenfolge zu codieren? Bei Verwendung von HTML zum Codieren von Zeichenfolgen werden gefährliche Zeichen wie <und> durch HTML -Entitäten wie <und> ersetzt. Wenn also der String <Script> alert ("Boo!") </Script> mit HTML codiert wird, wird er in <Script> alert ("boo!") </Script> konvertiert. Der Browser führt bei der Parsen codierter Zeichenfolgen keine JavaScript -Skripte mehr aus. Stattdessen zeigt es harmlose Seiten
Methode 2: HTML -Codierung vor dem Schreiben in die Datenbank
Zusätzlich zur Verwendung von HTML zum Codieren von Daten beim Anzeigen von Daten in einer Ansicht können Sie auch HTML verwenden, um Daten zu codieren, bevor Sie sie an die Datenbank senden. Die zweite Methode ist genau bei der Controller in Listing 4 des Programms der Fall.
wie:
public actionResult create (String message) {// Feedbackvar newfeedback = new feedback (); newfeedback.message = server.htmlencode (message); newFeedback.EntryDate = datetime.now; db.feedbacks.insertonsubmit (newFeedback); // RedirectReturn recirectToAction ("Index");};};Beachten Sie, dass der Wert der Nachricht in der Operation create () html codiert ist, bevor Sie an die Datenbank senden. Wenn in der Ansicht eine Nachricht wieder enthält, ist die Nachricht HTML codiert, sodass kein in die Nachricht injiziertes JavaScript eingeführt wird.
Zusammenfassen
Oft bevorzugen die Menschen die erste Methode, die in diesem Tutorial diskutiert wurde, und nicht die zweite Methode. Das Problem mit dem zweiten Ansatz ist, dass HTML-kodierte Daten schließlich in der Datenbank beibehalten werden. Mit anderen Worten, die Daten in der Datenbank enthalten seltsame Zeichen. Was ist der Nachteil davon? Wenn Sie Datenbankdaten in einem anderen Formular als einer Webseite anzeigen müssen, stoßen Sie auf Probleme. Beispielsweise können Daten in Windows Forms -Anwendungen nicht einfach angezeigt werden.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.