黑马程序员技术交流社区

标题: 前端安全之xss攻击 [打印本页]

作者: 小小K    时间: 2020-12-7 13:00
标题: 前端安全之xss攻击
前端安全简介
    XSS又叫CSS (Cross Site Script) ,跨站脚本攻击
    XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户
    XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、盗取用户cookie,甚至对主机进行远程控制
攻击流程
    假设存在漏洞的是一个论坛,攻击者将恶意的JS代码通过XSS漏洞插入到论文的某一页面中
    当用户访问这个页面时,都会执行这个恶意的JS代码,这个代码就会在用户的浏览器端执行
XSS攻击类型
危害:存储型 > 反射型 > DOM型
XSS形成原因
    形成XSS漏洞的  主要原因是程序中输入和输出的控制不够严格
    导致“精心构造”的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行
常见的漏洞场景
        登录,注册,搜索,留言一切表单的行为,过滤<>""/() (srcipt)(srcipt) 解析成html标签 如:&qt  <>
<script>alert("xss")</script>
<script>alert(document.cookie)</script>
<script>alert(window.localStorage.getItem("key"))</script>
'>
vue解决xss方法
v-html 出现xss问题
方法1:
<p v-html="$xss(test)"></p>
import xss from 'xss'
export default {
  data () {
    return {
      test: `<a onclick='alert("xss攻击")'>链接</a>`
    }
}
Object.defineProperty(Vue.prototype, '$xss', {
  value: xss
})
方法2:

安装
cnpm install vue-dompurify-html

引入
import VueDOMPurifyHTML from 'vue-dompurify-html'
Vue.use(VueDOMPurifyHTML)

使用
<div v-dompurify-html="rawHtml"></div>

方法3:
<div id="box">
    <input type="text" v-model="msg | filterHtml">
    <br>
    <label v-html="msg"></label>
</div>

Vue.filter('filterHtml',{
    read:function(val){//val就是以获取的msg的值
        return val.replace(/<[^>]*>/g);//去除文字的<...></...>标签
    },
    write:function(){
        return val;
    }
});
执行效果截图:

攻击代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2