• Pikachu-XSS防范措施及href和js输出点的案例


    xss常见防范措施                 

    总的原则:输入做过滤,输出做转义。

    ●过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字。

    ●转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面进行js转义

    xss之href输出                  

    先查看下后台源码

    输出在a标签的href属性里面,可以使用javascript协议来执行js

    payload:javascript:alert(111)

    查看也网页源码,ctrl+f,搜索111。确实成功啦

    那么在<a>标签里的 href作输出 的时候,到底改怎样防范呢???

    如果仅仅是使用htmlspecialchars做处理是不行的,

    有两个步骤,

    ●因为href一般是用来写超链接的,所以 我们可以在输入的时候仅仅  只允许http,https开头的协议,否则不允许输入;

    ●其次在进行htmlspecialchars处理。

    xss之js输出                    

    输入111,查看下网页源码,ctrl+f搜索111。

    输入被动态的生成到了javascript中,如何是好。

    构造闭合,把原本的<script>闭合掉,再插入我们自己的<script>

    输入:x'</script><script>alert('xss')</script>

    这里讲输入动态的生成到了js中,形成xss
    javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转义

    讲这个例子主要是为了让你明白,输出点在js中的xss问题,应该怎么修?
    这里如果进行html的实体编码,虽然可以解决XSS的问题,但是实体编码后的内容,在JS里面不会进行翻译,这样会导致前端的功能无法使用。
    所以在JS的输出点应该使用对特殊字符进行转义

  • 相关阅读:
    Linux下的搜索查找命令的详解(locate)
    Linux下的搜索查找命令的详解(whereis)
    Linux下的搜索查找命令的详解(which)
    Linux下的awk文本分析命令实例(二)
    Linux下的awk文本分析命令实例(一)
    Linux下的awk文本分析命令详解
    Linux下的at定时执行任务命令详解
    六. 元素修改与空值处理
    七. 高级方法
    八. Pandas的轴
  • 原文地址:https://www.cnblogs.com/escwq/p/12608900.html
Copyright © 2020-2023  润新知