我得到了angular2可以在服务器端渲染(即使我不知道什么是好处),我真的看到了angular2服务器端的一个例子。
但似乎angular2官方并不建议这样做。
服务器端XSS保护 from angular2 doc
在服务器上构建的HTML容易受到注入攻击。将模板代码注入Angular应用程序与将可执行代码注入应用程序相同;它使攻击者可以完全控制应用程序。为防止这种情况,请确保使用自动转义值的模板语言来防止服务器上的XSS漏洞。不要使用模板语言在服务器端生成Angular模板,这会带来引入模板注入漏洞的高风险。
如何理解?
答案 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表达式。