Je travaille sur la mise à jour d'une page Web ASP classique utilisée par un certain nombre de sous-sites de l'entreprise pour laquelle je travaille.Créer une page de sortie en utilisant l'ASP classique en évitant les pièges importants des Cross Site Scripting
Le but de la page est d'informer l'utilisateur qu'il quitte "notre" site et se dirige vers un autre site. Il s'agit essentiellement d'une clause de non-responsabilité, mais en raison de limitations de ressources et de temps, je ne peux pas ajouter l'avertissement à tous les sites que nous gérons.
Ceci est le cœur du problème. Le code actuel extrait une variable de la chaîne de requête pour créer le lien "continuer" dans la nouvelle fenêtre. Cela crée évidemment de nombreux problèmes sous forme de script intersite. Comment puis-je approcher cette mise à jour pour éliminer la plupart (sinon la totalité) des problèmes de script inter-sites à l'aide de vbScript/ASP.
Le code que j'utilise est ci-dessous.
<%@ Language = vbScript %>
<% Option Explicit %>
<%
Dim strLink
strLink = Request.QueryString("site")
strLink = Replace(strLink, "<", "<")
strLink = Replace(strLink, ">", ">")
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>
Si le lien est déjà sur votre site, pourquoi devriez-vous le désinfecter? –
Le problème n'est pas que les liens que nous ajoutons sont "mauvais" c'est que nous avons besoin d'une page de passerelle qui acceptera n'importe quelle URL passée et fournira l'avertissement nécessaire et transmettra l'utilisateur s'ils continuent l'action de quitter le site . (C'est un site financier tellement de clauses de non-responsabilité et de «trucs» juridiques à traiter). Ainsi, le problème général est que n'importe qui peut transmettre une URL (ou un «mauvais» script) à la page et potentiellement créer un problème XSS. – Nip