Skip to content
This repository was archived by the owner on Nov 7, 2018. It is now read-only.

Commit 5b7fdc2

Browse files
authored
Merge pull request #17 from teresita-guerrero/issue6
XSS via User Story JSON file -- First approach Fixes #6
2 parents de15ec9 + 2a159ae commit 5b7fdc2

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

dashboard-project-api/common/models/userStory.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ module.exports = function(UserStory) {
88
var async = require("async");
99
var htmlparser = require("htmlparser");
1010
var cheerio = require('cheerio');
11+
var xssFilters = require("xss-filters");
1112
const SPEC_URL = "http://specs.openstack.org/openstack/openstack-user-stories/user-stories/proposed/";
1213

1314

1415
var blueprintsResume = [];
1516

16-
1717
var getAllfiles = function(){
1818
return fs.readdirSync(route)
1919
.map(function(file){
@@ -29,11 +29,12 @@ module.exports = function(UserStory) {
2929
var userStories = getAllfiles();
3030
//filter by Id
3131
var file = userStories.filter(function(item){
32-
return item.id == id;
32+
// VALIDATE IF A VALID ID IS COMING!
33+
console.log("my id",xssFilters.inHTMLData(id));
34+
return item.id == xssFilters.inHTMLData(id);
3335
})
3436

3537
file = (file.length > 0)?file[0]:null;
36-
3738
return file;
3839

3940
};
@@ -48,15 +49,19 @@ module.exports = function(UserStory) {
4849
userStory.tasks.forEach(function (taskName, index, array) {
4950

5051
var task = userStory.tasks_status[taskName];
52+
console.log("La tarea es:", task);
5153

5254
task.projects.forEach(function (projectName, index, array) {
53-
54-
var blueprints = task.projects_status[projectName].blueprints;
55+
console.log("The project name is, ", projectName);
56+
//VALIDATE projectName EXISTS
57+
var blueprints = task.projects_status[xssFilters.inHTMLData(projectName)].blueprints;
5558
var blueprintNames = Object.keys(blueprints);
5659

5760
blueprintNames.forEach(function (blueprintName, index, array) {
58-
59-
if (blueprints[blueprintName] == 'completed')
61+
console.log("single blueprint: ",blueprintName);
62+
console.log("el nombre del blue print es: ", blueprints[blueprintName]);
63+
// VALIDATE PROPERLY if this statement is not true
64+
if (blueprints[xssFilters.inHTMLData(blueprintName)] == 'completed')
6065
blueprintsResume.completed = blueprintsResume.completed + 1;
6166

6267
blueprintsResume.total = blueprintsResume.total + 1;
@@ -316,10 +321,10 @@ module.exports = function(UserStory) {
316321

317322
var itemResult = {
318323
completed: getbluePrintResume(userStory),
319-
dateCreated: userStory.date,
320-
lastUpdate: lastUpdated,
321-
userStory: userStory.description,
322-
id:userStory.id
324+
dateCreated: xssFilters.inHTMLData(userStory.date),
325+
lastUpdate: xssFilters.inHTMLData(lastUpdated),
326+
userStory: xssFilters.inHTMLData(userStory.description),
327+
id:xssFilters.inHTMLData(userStory.id)
323328
};
324329

325330
cb(null, itemResult);

dashboard-project-api/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"loopback-datasource-juggler": "^2.39.0",
2323
"markdown": "^0.5.0",
2424
"serve-favicon": "^2.0.1",
25-
"underscore": "^1.8.3"
25+
"underscore": "^1.8.3",
26+
"xss-filters": "^1.2.7"
2627
},
2728
"devDependencies": {
2829
"jshint": "^2.5.6",

0 commit comments

Comments
 (0)