【问题标题】:Security features in angularjsangularjs 中的安全特性
【发布时间】:2015-06-15 05:24:31
【问题描述】:

您好,我想了解 Angular js 的安全特性。我已阅读 Angular 提供内置保护以防止基本安全漏洞。

  1. 它可以防止跨端脚本攻击。
  2. 防止 HTML 注入攻击。
  3. 为服务器端通信阻止 XSRF 保护。

制作安全的 Angular 应用程序的最佳实践是什么,安全的 web 应用程序真的需要 ngCsp、$sce 和 $sanitize

【问题讨论】:

  • 这是一个太宽泛的问题,没有某种用例。那篇文章中描述的角度特性很棒,但是如果你不知道你在用 JS 做什么,有一些方法可以绕过这些特性。请添加一个带代码的用例来帮助演示,可以提供更适用的答案。
  • @Ben Rondeau 感谢您的回复,我只想为我的应用程序添加一个基本级别的安全性,而不让它变慢,这将包括我上面提到的所有三点。如果你能提供一些示例或一些文章供参考,这将是一个很大的帮助。

标签: angularjs


【解决方案1】:

您可以启用 AngularJS CSP 支持。更多细节在这里。示例代码如下:

<!doctype html>
<html ng-app ng-csp>
...
...
</html>

ng-csp 强制你不要使用像evalFunction 这样可以注入的代码。 来自 doc 的 ng-sanitize。

通过将 HTML 解析为标记来清理输入。一切安全 然后将令牌(来自白名单)序列化回正确转义 html 字符串。这意味着没有不安全的输入可以进入 然而,返回字符串,因为我们的解析器比 典型的浏览器解析器,可能有一些晦涩的输入, 会被浏览器识别为有效的 HTML,不会通过 消毒剂。输入也可能包含 SVG 标记。白名单是 使用函数aHrefSanitizationWhitelistimgSrcSanitizationWhitelist 的 $compileProvider

您根本无法使用 innerHTML 附加任何代码。

对于 $sce,您可以参考以下链接。 TrustasHTML 和它的好 tutorial

除此之外,您还可以使用身份验证令牌。

编辑:您可以验证backend 中的输入以确保没有进行注入。

【讨论】:

    猜你喜欢
    • 2013-09-19
    • 2017-09-22
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2016-03-15
    • 2017-11-10
    • 2015-02-26
    相关资源
    最近更新 更多