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

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

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


");修改为context.Response.Write(HttpUtility.HtmlEncode(line)+"
");即可

解决方案:在显示页面的服务器端程序改为
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"。示例: 。设置此值后,可通过在 Page 指令或 配置节中设置 validateRequest="false" 禁用请求验证。


你可能感兴趣的:(asp.net基础-xss发贴漏洞解决方案)