2

次のコード部分が「DOM ベースのクロスサイト スクリプティング」としてフラグ付けされた AppScan セキュリティ レポートを受け取りました。

i !== null && i.errors ? (i.errors[0].Key === "OrderNotFound" || 
i.errors[0].Key === "ShoppingCartModified") && (alert(i.errors[0].Value),
window.location.href = window.location.href.split("#")[0]) : 
t([s("GenericErrorMessage")])

しかし、どこに問題があるのか​​ わかりません。これは偽陽性ではないかと思います。これは縮小されていない元のコードです

if (jsonResult !== null && jsonResult.errors) {
    if (jsonResult.errors[0].Key === "OrderNotFound" ||
        jsonResult.errors[0].Key === "ShoppingCartModified") {
        alert(jsonResult.errors[0].Value); //the problem is here
        window.location.href = window.location.href.split("#")[0]; //or here
    }
} else {
    //uiErrors is a KnockoutJS observableArray that is 
    //shown in the page using the text binding avoiding any innerHTML injection.
    //res = method that returns an error msg string for a given key.
    uiErrors([res("GenericErrorMessage")]); 
}

jsonResultは ajax 呼び出しの応答であり、次の構造を持っています。

{
    "errors": [
        {"Key": "OrderNotFound", "Value": "Your order could not be found."}
    ]
}

ユーザー入力を使用してキーの両方が作成されない場合。これらは、サーバー コードの const 文字列です。

AppScan 出力の追加

[1/1] DOM ベースのクロスサイト スクリプティング

重大度: 高

テストの種類: アプリケーション

脆弱な URL: https://www.domain.com/scripts/checkout.js

CVE ID: なし

CWE ID: 79

修復タスク: クライアント側のコードを分析し、その入力ソースをサニタイズする

バリアント 1 の 1 [ID=1612185601]

リクエスト/レスポンス:

https://www.domain.com/scripts/checkout.js ? v=m9is46e_hmcr4gnmuj4o6xssdozcytmn9flbuxtvbmy1:

1 : i !== null && i.errors ? (i.errors[0].Key === "OrderNotFound" || i.errors[0].Key === "ShoppingCartModified") && (alert(i.errors[0].Value), window.location. href = window.location.href.split("#")[0]) : t([s ("GenericErrorMessage")])

応答の検証:

なし

理由:

なし

CWE ID:

79

4

2 に答える 2

0

window.location.href = window.location.href.split("#")[0];

上記のコード行が問題を引き起こしています。技術的には、split("#")[0] は # 文字の後の値を削除します..しかし、彼のキャッシュ ポイントは次のとおりです。「#」文字の前にインジェクションを含めるとどうなりますか?

protocal://domainname.com/details.htm/ "injection!@#$XSS" #Helloworld!

于 2016-02-27T13:56:25.140 に答える
0

表示されたコードには、XSS の問題はないようです。これは誤検知であるか、スキャナーが問題の場所を適切に特定していません。

より正確な位置情報を取得するために、完全に非縮小化されたコードを使用しながら、アプリケーションでスキャナーを再実行する価値があるかもしれません。実際には誤検出であっても、スキャナーが何を混乱させているのかを理解するのに役立ちます。

于 2013-09-18T18:58:52.537 に答える