乐趣区

前端培训初级阶段-xss相关20190418

前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。

这块内容是在会后又加了一节(老板说要处理这块内容)。之前其实就做过一期这样的内容 XSS_跨站脚本攻击

我们要讲什么?

  1. xss 是什么?
  2. 攻击原理是什么?
  3. 危害
  4. 预防手段是什么?
  5. web 安全还有什么是需要注意的

XSS 是什么?

XSS 攻击全称 跨站脚本攻击 (Cross Site Scripting),是为不和层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆,故将跨站脚本攻击缩写为 XSS,XSS 是一种在 web 应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到提供给其它用户使用的页面中。

XSS 攻击原理

恶意攻击者往 Web 页面里插入恶意 javascript 代码。当其他用户浏览该页面时,嵌入的代码会被执行,从而达到恶意攻击用户的目的。

XSS 危害

常见于一些私人的博客,攻击者恶意评论,弹出 alert,这种充其量也就是一个玩笑。
但是如果是 盗窃 cookie异常提交请求,这些就属于危险操作。cookie 可以用来伪装成其他用户操作,有可能就会造成财产上的损失。

预防手段

首先我们来分析他攻击方式,在其他用户端执行了一段异常代码,那么我们不执行不就好了吗?

  1. 富文本情况,这个可属于重灾区,因为你不确定内容是什么,你还要原样输出。业界方案一般来说是 白名单,比如说 <script> 标签都过滤,一些时间都过滤比如<img onerror=,从而达到预防攻击的目的。
  2. 服务端直出情况,比如说一些模板引擎啊什么的,我们公司用的是 velocityfreemark。这个位置又分为三个方法

    1. toHtml,首先所有内容都是直出到页面,先经过 html 解析。这个位置要预防 <script> 等一些注入的情况
    2. toJS,有可能有一些内容是输出在了 script 标签内,这个时候我们要注意他是不是 "'</script> 等,故意破坏数据的。
    3. toURL,这个就是判断存在不存在 javascript:alert(); 的情况了。
  3. 页面 innerHTML 或者 write。这个怎么说呢,Vue 或者一些框架是没问题的,因为他们是插槽法,而不是拼接法。

    1. toHtml,主要用于 jquery,处理一些字符变成实体编码
    2. toURL, 也是用来判断 javascript:alert(); 的情况

web 安全问题

XSS、CSRF、arp、xff、中间人攻击、运营商劫持、防暴刷

  1. CSRF 一般来说就是页面直出一个 token, 每次请求都带上 token。
  2. 劫持 https 有的时候运营商的劫持还是没办法。
  3. 刷,这个略坑。

参考代码

参考文献以及资料

  1. Web 安全学习笔记
    也是当初在网上找资料发现的。介绍的挺全面的。
退出移动版