[mirotlaksfu] - improve check XSS
هذا الالتزام موجود في:
@@ -7,27 +7,42 @@ const log = new Logger('Xss');
|
|||||||
const checkXSS = (dataObject) => {
|
const checkXSS = (dataObject) => {
|
||||||
try {
|
try {
|
||||||
if (typeof dataObject === 'object' && Object.keys(dataObject).length > 0) {
|
if (typeof dataObject === 'object' && Object.keys(dataObject).length > 0) {
|
||||||
const escapedObj = escapeObject(dataObject);
|
let objectJson = objectToJSONString(dataObject);
|
||||||
const data = xss(JSON.stringify(escapedObj));
|
if (objectJson) {
|
||||||
log.debug('Check XSS done');
|
let jsonString = xss(objectJson);
|
||||||
return JSON.parse(data);
|
let jsonObject = JSONStringToObject(jsonString);
|
||||||
|
if (jsonObject) {
|
||||||
|
log.debug('XSS Object sanitization done');
|
||||||
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (typeof dataObject === 'string' || dataObject instanceof String) {
|
||||||
|
log.debug('XSS String sanitization done');
|
||||||
return xss(dataObject);
|
return xss(dataObject);
|
||||||
|
}
|
||||||
|
log.warn('XSS not sanitized', dataObject);
|
||||||
|
return dataObject;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
log.error('Check XSS error', { error: error, data: dataObject });
|
log.error('XSS error', { data: dataObject, error: error });
|
||||||
return dataObject;
|
return dataObject;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function escapeObject(obj) {
|
function objectToJSONString(dataObject) {
|
||||||
const escapedObj = {};
|
try {
|
||||||
for (const key in obj) {
|
return JSON.stringify(dataObject);
|
||||||
if (obj.hasOwnProperty(key)) {
|
} catch (error) {
|
||||||
const escapedKey = key.replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
|
return false;
|
||||||
escapedObj[escapedKey] = obj[key];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return escapedObj;
|
|
||||||
|
function JSONStringToObject(jsonString) {
|
||||||
|
try {
|
||||||
|
return JSON.parse(jsonString);
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = checkXSS;
|
module.exports = checkXSS;
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم