var cookieValue = crypto.createHash('md5').update('jifeng_jifeng').digest('hex');
function getCookie(headers){
var cookies = {};
headers.cookie && headers.cookie.split(';').forEach(function(cookie) {
var parts = cookie.split('=');
cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim();
});
return cookies;
}
function checkUser(req, res, callback){
var chunks = [];
var length = 0;
var rows = null;
req.on('data', function(data){
chunks.push(data);
length += data.length;
})
req.on('end', function(){
var rows = new Buffer(length);
var len = 0;
for (var i = 0, il = chunks.length; i < il; i++) {
chunks.copy(rows, len);
len += chunks.length;
}
var args = querystring.parse(rows.toString());
if (args && args.name === 'jifeng' && args.password ==='jifeng') {
res.setHeader('Set-Cookie', ['cookie1987=' + cookieValue]);
callback(null, true);
} else {
callback(null, false);
}
})
}
function authMiddle(req, res, callback){
var flag = false;
var params = urllib.parse(req.url, true);
if (params.pathname === '/checkuser') {
return checkUser(req, res, callback);
} else {
var headers = req.headers;
var cookies = getCookie(headers);//得到用户cookie
if (cookies && cookies.cookie1987) {
var v = cookies.cookie1987;
if (v == cookieValue) {
flag = true;
}
}
callback(null, flag)
}
}
那具体怎样进攻呢?
get攻击的页面很简单。