2013-10-29 98 views
0

我有处理Unicode字符的C#代码。下面的代码也编码XSS代码。在C中处理XSS和Unicode字符#

String s = "<<SCRIPT>alert("Hack");//<</SCRIPT>"; 
var resultText = Microsoft.Security.Application.AntiXss.HtmlEncode(s); 
string encodedValue = HttpUtility.UrlEncode(resultText, Encoding.UTF8).Replace("+", "") 

txtResult.Text = encodedValue;// display in the text box in UI 

但在不同way.I上面显示数据要显示在文本框中(txtResult)

文本

<<SCRIPT>alert("Hack");//<</SCRIPT> 

任何一个可以帮助我实现这一目标。 基本上我试图处理XSS和Unicode字符。

+1

这是否甚至编译?你需要转义那些引号。 –

+0

基本上它是一个我陷害的例子,但我正在寻找解决方案 – Kanchana

+0

什么是'txtResult'?一些webforms控件的'Text'属性带有标记和其他纯文本。对于纯文本控制,根本不需要转义。我不确定URL-escape-and-remove-pluses步骤应该达到什么目的。 – bobince

回答

0
void Main() 
{ 
    string _js = @"<<SCRIPT>alert(""Hack+"");//<</SCRIPT>"; 

    // Break it down into bytes 
    byte[] _bytes = UTF8Encoding.UTF8.GetBytes(_js);  

    // Use the single unicode character literal representation of the characters wanting to strip 
    //  '+' = +, etc... 
    byte[] _sanatizedBytes = _bytes.Where(b => b != '+').ToArray(); 

    // Dump the bytes back into a UTF8 string 
    string sanitizedJavascript = UTF8Encoding.UTF8.GetString(_sanatizedBytes); 

    string _safeJavascript = Microsoft.Security.Application.Encoder.HtmlEncode(sanitizedJavascript); 

    string decode = HttpUtility.HtmlDecode(_safeJavascript); 

    var txtdecoded = new TextBox() { Text = decode};  

} 

这可能是去做最冗余的方式,因为你打破它,经营自己的致敏,然后堵回。

个人而言,我只想用这个Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(_js);条列出所有列入黑名单的标签,例如脚本,以及它们之间的任何内容,而不管UTF8,ANSI等。

我有点困惑,至于你真正需要什么......所以,投票是必要的,而不是让我们在做出决定之前将注释中的细节散列出来。