В настоящее время я использую функцию для очистки данных, поступающих в функции без сервера, с помощью этого метода.
const createDOMPurify = require('dompurify');
const { JSDOM } = require('jsdom');
// Prepare DOMPurify
const { window } = new JSDOM('');
const DOMPurify = createDOMPurify(window);
// HTML & Mongo sanitization
// Go through each value in an object and purify them. If the value is an object, Ouroboros!!!
const dataSanitizer = data => {
const sanitizedObject = {};
Object.keys(data).forEach(key => {
const value = data[key];
if (!/^\$/.test(key)) {
// Mongo sanitization
if (typeof value === 'object') {
// Ouroboros!!!
const val = dataSanitizer(value);
sanitizedObject[key] = val;
} else {
//
sanitizedObject[key] = DOMPurify.sanitize(value, { ALLOWED_TAGS: [] }); // HTML sanitization
}
}
});
return sanitizedObject;
};
module.exports = dataSanitizer;
, но этот сценарий является проблематичным, когда я пытаюсь сохранить данные, содержащие массивы, в базу данных mongo.,потому что, если объект содержит массивы, он меняет форму массива следующим образом.
{ fruits: [Apple,Orange] }
до {fruits:{ '1': apple, '2': Orange }
Есть ли правильный путь?промышленный стандарт?очистить данные, поступающие на серверные функции?или как мне исправить эту функцию?