私は、勤務先の会社で管理されている多数のサブサイトで使用されている従来の ASP Web ページの更新に取り組んでいます。
このページの目的は、ユーザーが「私たちの」サイトを離れて別のサイトに移動することをユーザーに通知することです。基本的には免責事項ですが、リソースの制限と時間の制限により、私たちが管理するすべてのサイトに免責事項を追加することはできません.
これが問題の核心です。現在のコードは、クエリ文字列から変数を取得して、新しいウィンドウに「続行」リンクを作成します。これは明らかに、クロス サイト スクリプティングの形で多くの問題を引き起こします。
vbScript/ASP を使用したクロス サイト スクリプティングの問題のほとんど (すべてではないにしても) を解消するには、この更新プログラムにどのようにアプローチすればよいでしょうか。
私が使用しているコードは以下のとおりです。
<%@ 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>