Frage

Ich arbeite eine klassische ASP-Webseite in der Firma gehalten durch eine Reihe von Sub-Sites verwendet zur Aktualisierung für die ich arbeite.

Der Zweck der Seite ist es, die Benutzer zu benachrichtigen, dass sie „unsere“ Website und gehen an einem anderen Ort verlassen. Es ist im Grunde ein Haftungsausschluss, aber aufgrund von Ressourcenbeschränkungen und Zeitbegrenzungen ich die rechtlichen Hinweise zu jedem Standort nicht hinzufügen können wir verwalten.

Dies ist der Kern des Problems. Der aktuelle Code zieht eine Variable aus dem Abfrage-String den „Weiter“ Link im neuen Fenster zu erstellen. Dies schafft offensichtlich viele Probleme in Form von Cross-Site-Scripting.

Wie nähere ich dieses Update der meisten zu beseitigen (wenn nicht alle) der Quer Fragen Site-Scripting-VBSript / ASP.

Der Code Ich verwende unten.

<%@ Language = vbScript %>
<% Option Explicit %>

<%
Dim strLink
strLink = Request.QueryString("site")
strLink = Replace(strLink, "<", "&lt")
strLink = Replace(strLink, ">", "&gt;")
strLink = Replace(strLink, chr(34), "")
strLink = Replace(strLink, "script", "", 1, -1, 1)
strLink = Replace(strLink, "onclick", "", 1, -1, 1)
strLink = Replace(strLink, "ondblclick", "", 1, -1, 1)
strLink = Replace(strLink, "onmousedown", "", 1, -1, 1)
strLink = Replace(strLink, "onmouseover", "", 1, -1, 1)
strLink = Replace(strLink, "onmousemove", "", 1, -1, 1)
strLink = Replace(strLink, "onmouseout", "", 1, -1, 1)
strLink = Replace(strLink, "onkeypress", "", 1, -1, 1)
strLink = Replace(strLink, "onkeydown", "", 1, -1, 1)
strLink = Replace(strLink, "onkeyup", "", 1, -1, 1)
strLink = Replace(strLink, "onfocus", "", 1, -1, 1)
strLink = Replace(strLink, "onblur", "", 1, -1, 1)
strLink = Replace(strLink, "&&", "")
strLink = Replace(strLink, "##", "")
strLink = Replace(strLink, "&#", "")
%>

<a href="<%= strLink %>">Continue</a>
War es hilfreich?

Lösung

Dies ist, was ich für HTML Hygienisierung empfehlen -

HTML Weiße Liste ist die neueste in dem "cool wenig Python Web-Service auf App Engine geworfen" von meinem guten Kollegen DeWitt Clinton.

Es ist eine Sache, und es tut es gut. Sie können den Dienst HTML passieren und es wird eine bereinigte Version zurück.

http://html-whitelist.appspot.com/

Andere Tipps

Sie benötigen einen Ansatz zu implementieren, die das Konzept der „Positive Sicherheitsmodell“ folgt. Sie sollten die „Website“ Variable analysieren und sicherstellen, dass es passt sich ausdrücklich auf, was erlaubt ist, und nicht als etwas zu schreiben, die für das, was aussieht nicht erlaubt werden sollte. Dadurch wird Ihr Ansatz wesentlich unempfindlicher gegen Angriffe, vor allem unerwartete knüpfen.

Ich schlage vor, das Schreiben eines regex (oder fragen, wie eine solche Regex auf Stackoverflow schreiben).

Auch während der Webdienst von Michael geschrieben ziemlich cool ist, sollten Sie beurteilen, ob es akzeptabel ist oder nicht eine Abhängigkeit von einer solchen Sache zu nehmen.

Sie können Logik hinzufügen Seite fortzusetzen, um sicherzustellen, dass es nur von einer Seite auf einer Ihrer Websites entweder auf Basis von URL oder IP-Adresse aufgerufen wird. Sie können auch eine Zeit und gehasht Code durch für zusätzliche Sicherheit übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top