web安全-xss
xss的定义
xss的原理
xss的攻击方式
脚本的注入,dom的攻击
xss的攻击方式有两种方式
1.反射型
发出请求时,xss代码出现在url中,作为输入提交到服务器端,服务器端解析响应,xss代码随响应内容一起传回浏览器,最后浏览器解析xss.
简单例子:
在node.js 中用express 来作为整个应用的服务架构,-e 表示应用ejs来调用模板引擎,./ 表示当前目录
express -e ./
例:在url中 http://localhost:3000/?xss=<img src="null" onerror="alert(1)" />
或者是:http://localhost:3000/?xss=<p onclick=%22alert('点我')>点我
或者是;http://localhost:300/?xss= 实现将网址植入各种广告
<%- %> 前面是减号的就是不需要对内容进行转义,<%= %> 前面是减号的就是不需要对内容进行转义,
2.存储型
存储型与放射型的差别仅在于:提交的代码会存储在服务端(数据库,内存,文件系统等),下次请求目标页面时不用再提交xss代码
问题:存储型的攻击代码是怎么进入存储到服务端的呢?
xss的防御措施
- 编码
对用户输入的数据进行html Entity编码 - 过滤
移除用户上传的DOM属性,如onerror,onclick等
移除用户上传的stlye节点,Script节点,Iframe节点 - 校正
避免直接对htmL Entity解码
使用DOM Prase转换,校正不配对的DOM标签
来源:https://www.cnblogs.com/Imflyer/p/7234594.html