【问题标题】:Does express-validator sanitize.escape() the same as DOMPurify?express-validator sanitize.escape() 是否与 DOMPurify 相同?
【发布时间】:2018-08-22 08:58:46
【问题描述】:

想采取措施保护自己免受 XSS 攻击。

现在,我有:

sanitizeQuery('searchQuery').escape().trim()

这是足够的保护吗?或者你会建议添加类似 DOM Purify 的东西(在节点端运行)吗?

【问题讨论】:

    标签: node.js express xss sanitization express-validator


    【解决方案1】:

    简短回答:否

    长答案:您的方法将帮助您完成大部分工作,但我引用:

    如果您将不受信任的数据放入标签中的任何位置,或事件处理程序属性(如 onmouseover)、CSS 或 URL 中,则 HTML 实体编码不起作用。

    你应该使用类似DOMPurify

    来源XSS Prevention Cheat Sheet

    【讨论】:

      【解决方案2】:

      您可以将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)
      

      【讨论】:

        猜你喜欢
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 2011-01-28
        相关资源
        最近更新 更多