【问题标题】:Would that mean angular2 doesn't suggest rendering in server side这是否意味着 angular2 不建议在服务器端进行渲染
【发布时间】:2016-12-26 08:01:06
【问题描述】:

我知道 angular2 可以在服务器端渲染(即使我不知道有什么好处),我确实看到了 angular2 服务器端的示例。

Angular 2 Universal Starter

但是好像angular2官方没有这个建议。

服务器端 XSS 防护 from angular2 doc

在服务器上构建的 HTML 容易受到注入攻击。将模板代码注入 Angular 应用程序与将可执行代码注入应用程序是一样的;它使攻击者可以完全控制应用程序。为了防止这种情况,请确保使用自动转义值的模板语言,以防止服务器上的 XSS 漏洞。不要使用模板语言在服务器端生成 Angular 模板,这会带来引入模板注入漏洞的高风险。

如何理解?

【问题讨论】:

    标签: javascript angularjs angular


    【解决方案1】:

    XSS 可能是由添加到 DOM 的用户提供的数据引起的。

    这不是服务器端渲染的意义所在。服务端渲染就是在服务端执行你的 Angular2 应用,缓存结果并将生成的 DOM 发送给客户端,这样客户端要做的初始化工作就更少,可以在更短的时间内完成初始渲染。

    如果您的 Angular2 应用程序代码正在执行此操作,此可能会导致将用户提供的数据添加到 DOM。 Angular2 在服务器上渲染时也会清理添加的 HTML 以防止 XSS。如果您通过使用DomSanitizationService 将字符串标记为安全来防止这种情况发生,那么您将再次容易受到 XSS 攻击。

    【讨论】:

      【解决方案2】:

      不要在服务器端使用模板语言生成 Angular 模板,这会带来引入模板注入漏洞的高风险。

      依靠 Angular 2 清理 HTML 以防止 XSS 是不够的。攻击者可以将 Angular 表达式(例如 {{1==1}})注入服务器端模板。 {{1==1}} 可能是一个无害的示例,但请查看this exmaple,您可以在其中获取用户的身份验证令牌。这就是为什么在服务器上生成 Angular 模板是危险的。你必须确保对手不能注入恶意的 Angular 表达式。

      【讨论】:

        猜你喜欢
        • 2022-08-15
        • 1970-01-01
        • 2021-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        • 1970-01-01
        • 2011-09-18
        相关资源
        最近更新 更多