我有一个处理Unicode字符的C#代码。以下代码也编码XSS代码。
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
但是上面以不同的方式显示数据。我想显示文本
<<SCRIPT>alert("Hack");//<</SCRIPT>
文本框中的(txtResult)
任何人都可以帮助我实现这一目标。 基本上我正在尝试处理XSS和Unicode字符。
答案 0 :(得分: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等等。
我对你真正需要的东西感到有点困惑......所以,如果你觉得有必要进行投票,那么在做出决定之前,先让评论中的细节搞清楚。