【发布时间】:2018-08-22 08:58:46
【问题描述】:
想采取措施保护自己免受 XSS 攻击。
现在,我有:
sanitizeQuery('searchQuery').escape().trim()
这是足够的保护吗?或者你会建议添加类似 DOM Purify 的东西(在节点端运行)吗?
【问题讨论】:
标签: node.js express xss sanitization express-validator
想采取措施保护自己免受 XSS 攻击。
现在,我有:
sanitizeQuery('searchQuery').escape().trim()
这是足够的保护吗?或者你会建议添加类似 DOM Purify 的东西(在节点端运行)吗?
【问题讨论】:
标签: node.js express xss sanitization express-validator
简短回答:否
长答案:您的方法将帮助您完成大部分工作,但我引用:
如果您将不受信任的数据放入标签中的任何位置,或事件处理程序属性(如 onmouseover)、CSS 或 URL 中,则 HTML 实体编码不起作用。
你应该使用类似DOMPurify
【讨论】:
您可以将dompurify 与 express-validator 一起使用。
const { param, validationResult } = require('express-validator')
const createDOMPurify = require('dompurify');
const { JSDOM } = require('jsdom');
const xssSenitize = (value) => {
const window = new JSDOM('').window;
const DOMPurify = createDOMPurify(window);
return DOMPurify.sanitize(value, { ALLOWED_TAGS: [] });
}
query(['id']).customSanitizer(xssSenitize)
【讨论】: