asp.net基础-xss发贴漏洞解决方案

asp.net基础-xss发贴漏洞解决方案

asp.net基础-xss发贴漏洞解决方案
用户发贴也存在xss的问题.将发贴内容保存到一个文本文件中,示例为降低代码的复杂性不用数据库.
我们可以对请求的数据检测,如果请求数据中有<>等就认为是恶意请求,禁止提交.aspx默认就是采用这种策略,这样做的缺点是如果做的是一个程序员论坛,程序员就无法发表html代码的帖子了,因此更好的处理策略是将用户发表的内容按原样显示出来,而不是以html代码的方法出现,使用
HttpUtility.HtmlEncode就可以将字符串中的</等特殊字符转换为html显示的字符,也就是不把<script>当成定义脚本的标签,而是当成"&lt;script&gt,"p这样可以在页面上直接显示出来的内容.
修改看贴代码,将contect.Response.Write(line+"<hr/>");修改为context.Response.Write(HttpUtility.HtmlEncode(line)+"<hr/>");即可

解决方案:在显示页面的服务器端程序改为
protected void Page_Load(object sender, EventArgs e)
    {
        //Response.Write(File.ReadAllText("c:/5.txt"));
        string s = File.ReadAllText("c:/5.txt");
        Response.Write(HttpUtility.HtmlEncode(s));
        //HttpUtility.HtmlEncode(s)将字符串s中的<>等特殊字符转换为转义符
    }
即可,不过vS201须在 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值