想采取措施保护自己免受 XSS 攻击。
现在,我有:
sanitizeQuery('searchQuery').escape().trim()
那是足够的保护吗?或者你会推荐添加类似 DOM Purify 的东西(在节点端运行)吗?
想采取措施保护自己免受 XSS 攻击。
现在,我有:
sanitizeQuery('searchQuery').escape().trim()
那是足够的保护吗?或者你会推荐添加类似 DOM Purify 的东西(在节点端运行)吗?
简短的回答:没有
长答案:您的方法将帮助您完成大部分工作,但我引用:
如果您将不受信任的数据放在任何地方的标记中,或者像 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)