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

时间:2016-08-19 08:19:00

标签: javascript angularjs angular

我得到了angular2可以在服务器端渲染(即使我不知道什么是好处),我真的看到了angular2服务器端的一个例子。

Angular 2 Universal Starter

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

服务器端XSS保护 from angular2 doc

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

如何理解?

2 个答案:

答案 0 :(得分:0)

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

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

如果您的Angular2应用程序代码正在执行此操作,可以会将用户提供的数据添加到DOM中。 当在服务器上呈现时,Angular2会清理添加的HTML以防止XSS。如果你通过使用appearance.Acro6Layers = false; appearance.Layer4Text = PdfSignatureAppearance.questionMark; 将字符串标记为安全来防止这种情况,那么你再次容易受到XSS攻击。

答案 1 :(得分:0)

  

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

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