• 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)

  • 相关阅读:
    Wix Burn:如何将32位和64位的安装包制作成一个安装包
    禁止32位安装包运行在64位操作系统上
    图片校验码
    Oracle建表命令
    npm系列
    git使用
    syslog
    hibernate配置enum枚举属性
    httpClient发送post请求
    修改ubuntu系统语言
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6842710.html
Copyright © 2020-2023  润新知