node.js - Node JS - 如何处理 UGC 以防止任何攻击/站点漏洞?
问题描述
我们正在开发 Node JS 应用程序中的一项新功能,用户可以在其中上传任何文档(pdf、excel、img 等),我们将对其进行处理以便将其展示给其他用户。流程——我的意思是获取它的文本、生成缩略图、计数页面等等。在执行此操作时,我们需要考虑一个非常重要的点 - 我们如何确保没有攻击者使用此功能来攻击我们的网站甚至我们的用户?虽然 XSS 非常流行——我确信我们应该防止其他漏洞。
我确信这个主题是任何操纵 UGC 的站点/工具的要点,但我找不到任何标准/备忘单/甚至是描述在操纵 UGC 时保护我的站点的过程的项目符号列表。
任何参考、链接、知识共享甚至是另一种开发语言的示例都将不胜感激!
解决方案
Web 安全的范围很广,但你是对的,XSS 是最流行的,但它有几种类型:
- Reflected XSS - 恶意脚本来自当前的 HTTP 请求。
- 存储的 XSS - 恶意脚本来自网站的数据库。
- 基于 DOM 的 XSS - 漏洞存在于客户端代码而不是服务器端代码中
在我看来,第三个(基于 Dom 的)对于您的应用来说是最实际的,因为人们可以上传一些将位于 IMG SRC 中的脚本,并且当用户加载此图像时 - 恶意脚本可能会窃取敏感数据,例如Cookies/身份验证令牌等。
在这种情况下,最流行的保护只是在“处理过程”中对特殊符号进行消毒。清理是当您将 HTML 符号替换为 HTML 实体时,例如:<
to<
等。您可以手动创建一些 Regexp 来执行此操作,但我宁愿建议使用类似的东西:dompurify 它具有许多有用的功能,例如:
- 支持 HTML、MathML 和 SVG
- 支持常用的标签/属性白名单/黑名单和 URL 正则表达式白名单
- 具有特殊选项可进一步清理某些常见类型的 HTML 模板元字符
和许多其他人
关于网络安全白名单和其他可能的漏洞。请检查这些,我认为它们可能对您有用
Web 安全 OWASP 备忘单 - 此资源包含一个非常详细的列表,其中包含所有可能的 Web 安全规则以及示例和解决方案
OWASP XSS 过滤器备忘单 - 特别针对 XSS 的文档,是最常见的文档
推荐阅读
- microsoft-graph-api - 如何诊断联系人和日历资源的图表权限问题
- sql - 你如何处理多线程的陈旧数据?
- android - 检测特定文本的 xy 坐标
- r - 如何在 R 中尝试和捕捉?
- java - Room Persistence:实体和 Pojos 必须有一个可用的公共构造函数
- svn - Tortoise svn 中的基本文件是什么?
- java - android firestore:从 HashMap 检索自定义对象
- r - 针对 odbc 与 OBIEE 的连接执行 R dbReadTable 和 dbGetQuery 时出错
- sql - 基于多个过滤条件的排除记录 - SQL 访问
- kubernetes - 找不到 Kubernetes 持久卷挂载