4

URLに適したアプリケーションを作成するために、そのコンテキストにはURLにJSONが含まれています。これにより、次のようになります。

http://mysite.dev/myapppage/target#?context={%22attr1%22%3A{%22target_id-0%22%3A{%22value%22%3A%223%22%2C%22label%22%3A%22Hello%22}}}

基本的なコンテキストをエンコードするもの:

{
"attr1":
    {
    "target_id-0":
        {
        "value": "3",
        "label": "Hello"
        }
    }
}

オブジェクトを次のようにシリアル化しています:

JSON.stringify(context)

私はそれをデシリアライズしています:

var hashParamsElements = window.location.toString().split('?');
hashParamsElements.shift(); // we just skip the first part of the url
var hashParams = $.deparam(hashParamsElements.join('?'));
var contextString = hashParams.context;
var context = JSON.parse(contextString);

コンテキストは変数を読み取るためにのみ保存され、評価されたコードは含まれていません。XSSが安全かどうか誰かに教えてもらえますか?

脅威がある場合:どうすればそれを回避できますか?

4

3 に答える 3

4

この種の脅威は、JSONをデコードするさまざまな方法、つまりevalとを使用することから発生しますnew Function。これらはJSコードを直接実行するため、URLにコードを挿入する(そしてそれにリンクする)ことで、非永続的なXSS攻撃を許可します。

JSON.parseこの問題はなく、この種の攻撃に対して安全です。

(json.org)も参照してください。

于 2012-07-09T21:36:54.590 に答える
2

どこかlabelでDOMに挿入されることになりますか?(IE、$('#something').html(context.attr1.target_id-0.label)

それから私はを入れることができまし<script>...</script>た、labelそしてあなたのXSSがあります。

于 2012-07-09T21:48:44.407 に答える
1

脅威は見当たりません。その完全に安全です。JSON.parse実行を許可しませんfunction

また、なぜ使用するのか?。「実際の」URLの感触を与えたい場合は、代わりにhashbangを使用してください。

于 2012-07-09T21:38:48.817 に答える