2011-12-21 5 views
0

私たちのサイトのいくつかの領域には、要求を送信するためにInfoPathフォームが実装されています。一例は、ユーザーがメッセージに返信できるスタッフに質問をすることができるリクエストフォームです。InfoPathフォームでクロスサイトスクリプティングを防止する方法

誰かがInfoPathコントロール(件名またはメッセージ本文)のいずれかでJavaScriptに入力し、InfoPathフォームを通じてデータを送信できる可能性があります。そのJavaScriptコードは、そのページのスタッフ側で警告メッセージが表示されます。私は多くのことを研究しましたが、決定的な答えは見つかりませんでした。

このタイプの検証でXSSを制限/防止する直接的な方法はありますか?どんな提案も役に立ちます。

ありがとうございました!

+1

スタッフに提供されるHTMLをどのように生成していますか? –

+0

スタッフページは、メッセージページとまったく同じようにコーディングされています... ASP.NETとC#を別のソリューションで作成した別のページです。データはサーバーを通過します。 これは、使用する場所の例ですが、サイトのさまざまなセクションにInfoPathフォームがあります。私はInfoPathフォームでXSSを一般的に扱う方法を知りたいと思っています。フォームがプレーンテキストとしてデータを送信しても、リッチテキストなので、誰かがそれを介してスクリプトを送ることができるのではないかと心配しています。 – easyeman77

答えて

0

あなたのスタッフのHTMLはJavascriptを介して生成されている場合、テキストをエンコードすることができ、例えば、

var titleValue = '<'+'script type="text/javascript">alert(123);<'+'script>', 
      encodedValue = [], 
      c; 
     for (var i = 0;i < titleValue.length;i ++) { 
      c = titleValue.charAt(i); 
      if (c == '<') 
       encodedValue.push('&lt;'); 
      else if (c == '>') 
       encodedValue.push('&gt;'); 
      else if (c == '&') 
       encodedValue.push('&amp;'); 
      else if (c == '"') 
       encodedValue.push('&quot;'); 
      else 
       encodedValue.push(c); 
     } 
     alert('encoded value is: ' + encodedValue.join('')); 

よろしく、

ベン

0

、あなたは任意のHTMLマークアップを避けるためのinnerTextを使用することができます解釈:

document.getElementById('text').innerText = untrustedOutput; 

サーバー側の場合は、benban123答え、あなたのラングアグに適応させてください。 PHPでは、私は使用したいと思います:

htmlentities($text); 

(参照:http://www.php.net/manual/en/function.htmlentities.php) しかし、私はその有効性については分かりませんが、XSSは数多くあります。

EDIT:あなたのテキストがjavascript関数alert(msg)で表示されるようになっている場合は、あなたが解釈されないので安全です(改行文字/ nから離れている可能性があります)。

関連する問題