[英]Would that mean angular2 doesn't suggest rendering in server side
我知道angular2可以在服務器端渲染(即使我不知道有什么好處),我確實看到了angular2服務器端的示例。
但是,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.