xss的攻击方式
xss的攻击方式
1、反射型
2、存储型
反射型定义:
发出请求时,xss代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,xss代码随响应内容一起传回给浏览器,最后浏览器解析执行xss代码。这个过程像一次反射,因此叫反射型xss。
构建node应用,
mkdir xxx
cd xxx
mkdir xss
cd xss
express -e ./
命令:express -e ./ express表示安装express -e表示使用ejs作为模板 ./表示当前目录中 (使用express -e ./的命令之前我们应该使用npm安装express框架 npm install -g express , npm install -g express-generator )
npm install
目录结构如下:
更改routes/index.js的内容:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express',xss: req.query.xss}); //xss: req.query.xss 服务端对哪个字段需要解析
});
module.exports = router;
更改views/index.ejs的内容:
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<div class=''>
<%- xss %> // '<%-'是‘-’不是‘=’,允许输入html内容,不需要转义,所以用‘-’
</div>
</body>
</html>
npm start 看下效果,在页面上输入http://localhost:3000/?xss=12
如果xss输入的是img、iframe标签呢
注意:如果页面报错
则在routes/index.js文件中加入‘ res.set('X-XSS-Protection',0);’
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.set('X-XSS-Protection',0);
res.render('index', { title: 'Express',xss: req.query.xss});
});
module.exports = router;