2017-02-15 2 views
0

[解決済み] - これは典型的な問題にねじれている 下記参照:「どのようにユーザーコントロールのHTMLを取得するには? 私はこれを行う方法を知っていると私は何年もそれをやってきたが、最近私は、Webのセキュリティの詳細知識が豊富になったと私は私の文字列(別名コントロールHTML)は、通常のHTMLとしてクライアントに復帰され、それがコード化されていないことに気づいた\エスケープ。私はそれはJavaScriptを使用してブラウザになったら、私はそれを逃れることができることを知っているが、それはすでに脱出し、サーバから来た場合、それはより安全になります。ASP.Net - エスケープとして戻りユーザーコントロールのhtml テキスト

現在、私は次のように戻って、クライアントに何かを取得しています:私は探しています何

returnText = "<input id='myButton' text='whatever'>" 

は次のとおりです。

returnText = "&lt;input%20id='myButton'%20text='whatever'&gt;" 

(または類似したもの)

私が使用していたコードこれらのタイプのコールでは非常に典型的です。マイASCXの応答として符号化される:

StringBuilder myStringBuilder = new StringBuilder(); 
TextWriter myTextWriter = new StringWriter(myStringBuilder); 
HtmlTextWriter myWriter = new HtmlTextWriter(myTextWriter); 
viewControl.RenderControl(myWriter); 
strControl = myTextWriter.ToString(); 

そして私はXMLHTTPRequestオブジェクトを使用してサーバー上の私のコントロールを呼び出しています:私は何とか文字列をエスケープするレンダリング処理中にResponseオブジェクトを傍受することができ

function callServer(strPage,qryParms) { 
if (xmlHttp != null) { xmlHttp.abort(); } 
xmlHttp = null; 
var retValue = ""; 
xmlHttp = CreateHttpRequest(); 
if (xmlHttp == null) { 
    alert("Your browser does not support Ajax HTTP Requests"); 
    return; 
} 
else { 
    xmlHttp.open("POST", strPage, false); 
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlHttp.onreadystatechange = function() 
     if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { 
      retValue = xmlHttp.responseText; 
     } 
    } 
    xmlHttp.send(qryParms); 
} 
// retValue = htmlEncode(retValue); <--- this is where I could convert it. 
return retValue; 
} 

をそれがブラウザに戻ってくる前に?

ありがとう!

+0

の可能性のある重複した[HTMLencode HTMLdecode](http://stackoverflow.com/questions/2650059/htmlencode-htmldecode) 'のための – VDWWD

+0

検索HTMLencode/HTMLdecode' – VDWWD

答えて

0

は@VDWWDに感謝します。 Server.HTMLencodeは助けたが、私の答えは、renderイベントにコントロールのHTMLの抽出物を移動し、それをエンコードして、レンダリング時にそれを書くことでした。だから、コントロールのコードは次のようになります。

protected override void Render(HtmlTextWriter writer) 
{ 
    TextWriter tw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(tw); 
    base.Render(htw); 
    string pageSource = tw.ToString(); 
    //--- this is where I encode\escape the returning HTML ---- 
    pageSource = Server.HtmlEncode(pageSource); 
    writer.Write(pageSource); 
} 
関連する問題