0

私は、勤務先の会社で管理されている多数のサブサイトで使用されている従来の ASP Web ページの更新に取り組んでいます。

このページの目的は、ユーザーが「私たちの」サイトを離れて別のサイトに移動することをユーザーに通知することです。基本的には免責事項ですが、リソースの制限と時間の制限により、私たちが管理するすべてのサイトに免責事項を追加することはできません.

これが問題の核心です。現在のコードは、クエリ文字列から変数を取得して、新しいウィンドウに「続行」リンクを作成します。これは明らかに、クロス サイト スクリプティングの形で多くの問題を引き起こします。

vbScript/ASP を使用したクロス サイト スクリプティングの問題のほとんど (すべてではないにしても) を解消するには、この更新プログラムにどのようにアプローチすればよいでしょうか。

私が使用しているコードは以下のとおりです。

<%@ 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>
4

3 に答える 3

2

「ポジティブ セキュリティ モデル」の概念に従うアプローチを実装する必要があります。「サイト」変数を解析し、許可されていないものを探して何かを書くのではなく、許可されているものに明示的に準拠していることを確認する必要があります。これにより、攻撃、特に予期しない攻撃に対するアプローチの回復力が大幅に向上します。

正規表現を作成することをお勧めします (または、stackoverflow でそのような正規表現を作成する方法を尋ねてください)。

また、Michael が投稿した Web サービスは非常に優れていますが、そのようなサービスに依存することが許容できるかどうかを評価する必要があります。

于 2008-10-25T02:57:46.857 に答える
1

これは、HTMLサニタイズに推奨するものです-

HTML ホワイトリストは、私の良き同僚である DeWitt Clinton による「App Engine に投げかけられたクールで小さな Python Web サービス」の最新のものです。

それは1つのことを行い、それをうまく行います。サービス HTML を渡すと、サニタイズされたバージョンが返されます。

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

于 2008-10-23T21:32:08.197 に答える
0

ページを続行するロジックを追加して、URL または IP アドレスに基づいて、いずれかのサイトのページからのみ呼び出されるようにすることができます。セキュリティを強化するために、時間とハッシュ化されたコードを渡すこともできます。

于 2008-10-26T17:32:03.960 に答える