zoukankan      html  css  js  c++  java
  • 常见前端安全

    1.跨站脚本攻击,俗称XSS(cross )

      什么是XSS?

        xss是恶意用户将脚本植入到页面中执行而获取相应敏感信息。也就是会在web页面某个节点(文本节点、属性节点)运行。

      XSS攻击的危害包括:

        1.盗用账号等敏感信息

        2.非法转账等

      XSS攻击类型:

        1.反射型。通过一个伪装的url链接进行攻击,利用url的search参数将脚本伪装,当页面获取链接参数进行攻击

        2.储存型。通过表单输入,储存数据库,再在页面读取数据,回显执行脚本进行攻击。

        3.富文本。

      注入点:

        1.html节点内容
          评价输入框输入存储DB后读取

          <div> {content} </div>
          <div> <script></script></div>

        2.html属性
          URL传入src,scr提前关闭引号

          <img src='#{img}' />
          <img src="1" onerror="alert(1)" />
        3.脚本
          提前关闭引号

            <script>
              var data = '#{data}'
              var data = 'hello';alert(0)''
            </script>
        4.富文本编辑
          本质是一段复杂的html,提交

      XSS防御

        1.针对反射型

        2.针对html的脚本注入

    //html节点 防御
    
    //对于尖括号“<” ">" 进行转义
    
    //转义时机: 在存入数据库前 或  在读取DB展示前转义
    
    function escapeHtml(str){
        str = str.replace(/&/g, '&'); //这句在先,不然会把&lt的&符号也转了
        str = str.replace(/</g, '<');
        str = str.replace(/>/g, '>');
        return str
    }
    
    //html属性 防御
    //对于引号 “"” 进行转义
    
    function escapeHtmlProp(str){
        if(!str) return ''
        str = str.replace(/"/g, '&quto;');
        str = str.replace(/'/g, ''');
        str = str.replace(/ /g, ' ');
        return str
    }
    
    
    //以上两种防御方法可以合并为同一个函数方法
    

      

        3.针对JS的脚本注入

          直接用JSON.stringify(str)

        4.针对富文本的脚本注入

          1)白名单

            

    var xssfilter = function (html){
        if(!html) return;
        var cheerio = require('cheerio');
        var $ = cheerio.load(html);
        //设置白名单
        var whiteList = {
            'img': ['src','title']
        }
        $('*').each(function(index,el){
            if(!whiteList[el.name]){
                $(el).remove();
                return;
            }
            for( var attr in el.attribs) {
                if(whiteList[el.name].indexOf(attr) === -1){
                    $(el).attr(attr,null)
                }
            }
        })
        return html
    }
    

      

          2)黑名单

     

    2.跨站请求伪造,俗称CSRF

      1.攻击原理

        用户登录正常A网站进行正常操作,并且确认身份,保存认证信息。然后恶意网站B页面向A网站发起请求(带上A网站的认证身份),以达到在A网站执行恶意操作。

      2.危害

        利用用户登录态  盗取用户资金

        用户不知情    冒充用户发帖

        完成业务请求   损坏网站声誉

      3.防御

        从关键点切入:恶意网站向认证网站发请求,带上认证信息。

        1.禁止第三方网站带cookie。

          后端设置samesite值

        2.不访问认证网站

          在前端页面加入验证信息

          验证码

          token

        

     

  • 相关阅读:
    穷举 百鸡百钱
    for嵌套for ★
    纸张的厚度循环
    MySQL架构由小变大的演变过程
    MySQL数据库主从复制实践
    想要写出高性能sql语句,你得记住这些……
    Mongodb常用的性能监控命令
    Mongodb的mongostat命令
    Windows下MongoDB常用命令
    Windows下Mysql常用操作命令
  • 原文地址:https://www.cnblogs.com/gongxiansheng/p/10134554.html
Copyright © 2011-2022 走看看