imooc慕课 Web安全-XSS 笔记

平时写代码也注意到了xss攻击的问题,看到这个视频,就记录下,不过感觉好像没有说更深层的攻击方式。视频用的nodejs做的例子,我用php

1.理解XSS的攻击原理和手段,掌握XSS攻击的防范措施(ps:XSS:跨站脚本攻击)
了解xss的定义 理解xss的原理 理解xss的攻击方式 掌握xss的防御措施

2.理解XSS的攻击方式 --反射型 --存储型
反射型:发出请求时,XSS代码出现在url中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行xss代码,这个过程像一次反射。
存储型:提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交 xss代码

3.通过get方式
自动触发 http://localhost/xss/get.php?xss=%3Cimg%20src=%22null%22%20onerror=%22alert(1)%22/%3E
(这里通过图片不显示则自动执行onerror里的方法,不过这里浏览器直接把XSS过滤掉了,可以在代码里设置返回头)
或者 引诱触发http://localhost/xss/get.php?xss=%3Cp%20onclick=%22alert(5)%22%3E%E7%82%B9%E6%88%91%3C/p%3E
iframe型 http://localhost/xss/get.php?xss=%3Ciframe%20src=%22http://www.zhangxingju.com%22/%3E (可以用来置入广告)

header('X-XSS-Protection:0');  
echo $_GET['xss']; 

4.掌握xss的防御措施 --编码 --过滤 --校正

过滤 移除用户上传的dom属性,如onerror等 移除 用户上传的style节点,script节点、iframe节点等
(ps:不过有些时候并不能过滤用户的这些输入,输入的内容可能是必须的呢)

校正:避免直接对HTML Entity解码 使用DOM Parse转换,校正不配对的DOM标签

视频实战部分依然用的node,就不照着他的来了。后续转向看 http://www.freebuf.com/author/Black-Hole的内容 XSS也蛮多的道道的。

反射XSS是XSS分类中最多的,他们原理是下面这样:
Hacker——发现存在反射XSS的URL——根据输出点的环境构造XSS代码——进行编码、缩短(可有可无,是为了增加迷惑性)——发送给受害人——受害打开后,执行XSS代码——完成hacker想要的功能(获取cookies、url、浏览器信息、IP等等)

获取非本站的J/C (J/C指的是javascript、css,其实还包括flash、etc、html等等) 把以下代码输入在F12“审查元素”里”控制台”里,回车就OK

for(var i=0,tags=document.querySelectorAll('iframe[src],frame[src],script[src],link[rel=stylesheet],object[data],embed[src]'),tag;tag=tags[i];i++){
  var a = document.createElement('a');
  a.href = tag.src||tag.href||tag.data;
  if(a.hostname!=location.hostname){
    console.warn(location.hostname+' 发现第三方资源['+tag.localName+']:'+a.href);
  }
}

后续的就不记录了,直接看Black-Hole的内容了。
xss可以做到更多,危害很大,在php中可以用 htmlspecialchars 函数转义后再存入数据库,其他防范方法就不知了。