繁体   English   中英

那是否意味着angular2不建议在服务器端进行渲染

[英]Would that mean angular2 doesn't suggest rendering in server side

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

Angular 2通用入门

但是,angular2官方似乎并不建议这样做。

来自angular2 doc的 服务器端XSS保护

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

怎么理解呢?

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

这不是服务器端渲染的目的。 服务器端渲染是关于在服务器上执行Angular2应用程序,缓存结果并将结果DOM发送给客户端,以便客户端进行的初始化工作更少,并且可以在更短的时间内完成初始渲染。

可能会导致用户提供的数据,如果你的Angular2应用程序代码做这个被添加到DOM。 Angular2确实清除了添加的HTML,以防止在服务器上呈现时也发生XSS。 如果通过使用DomSanitizationService将字符串标记为安全字符串来防止这种情况,则您再次容易受到XSS攻击。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM