首先创建一个项目(在.netFramework 2.0下面创建)
然后打开项目目录下的Default.aspx(默认名字,我自己没改名字了。为了演示而已)选择源代码
在源代码最上方的<%@ Page 中添加 ValidateRequest="false"
再拖一个Button按钮,一个Label按钮,一个TextBox控件到Default.aspx页面 (Label用来显示TextBox文本框的内容)
双击Button按钮,
protectedvoid Button1_Click(objectsender, EventArgs e)
{
//File.AppendAllText的意思就是将指定的字符串追加到文件中,如果文件还不存在则创建该文件。
//System.IO.File.AppendAllText("e:/1.txt",TextBox1.Text+"<br>");
//stringstr = File.ReadAllText("e:/1.txt");
//第一种方法
stringstr = TextBox1.Text;
str= str.Replace("<", "<");
str= str.Replace(">", ">");
Label1.Text = str;
//第二种方法:
Label1.Text = HttpUtility.HtmlEncode(TextBox1.Text);
//Label1.Text=HttpUtility.HtmlEncode( File.ReadAllText("e:/1.txt")
}
}
注解:
假如用户在TextBox1文本框中输入一段javascript代码然后递交的时候,(例如在中输入<script>alert("你好工商银行提示您中了一辆小轿车,请联系123456领取")</script>)这段代码在你单间Button表单提交的时候就会弹出相应的一段对话框出来。而不是实实在在的纯文本的这段<script>alert("你好工商银行提示您中了一辆小轿车,请联系123456领取")</script>内容。
要想规避这个漏洞攻击
第一种方法.过滤”<”和”>”标记
XSS跨站攻击的最终目标是引入script代码在用户的浏览器中执行,所以最基本最简单的过滤方法,就是转换”<”和’>”标记。
string str=TextBox1.Text;
str=Replace(str,"<", "<");
str=Replace(str,">", ">");
Label1.Text=str;
第二种方法:
HttpUtility.HtmlEncode(TextBox1.Text);
就可以将 字符串中的<> /等特殊字符转换为HTML显示的字符了。也就是不把<script>当成脚本的标签,而是当成<,>;等这样的可以在页面直接显示出来的内容。