重新整理 .net core 實踐篇————防跨站指令碼攻擊[四十]
阿新 • • 發佈:2021-07-10
前言
簡單整理一下跨站指令碼攻擊。
正文
攻擊原理是這樣子的:
這種攻擊被攻擊的面挺多的,比如說只要有一個可以讓使用者輸入的注入指令碼就都是一個問題。
-
給網站注入指令碼
-
然後使用者訪問給網站注入的指令碼
-
腳本里面的請求都是對攻擊者站點的的請求
-
使用者資訊就被拿走了
上面這樣將可能有點蒙,舉一個以前的例子哈。
有一個站點,有一個上傳功能,但是上傳功能沒有限制,被別人注入一個一個index.html頁面,裡面是登入註冊。
然後使用者通過某些連結訪問了這個index.html,後面的請求都是訪問攻擊者的站點的請求,然後就被攻擊了。
如果這個index.html是一個充值或者登入,那麼還是非常危險的,那麼如何來做點防護措施呢?
-
對使用者的提交內容進行驗證,拒絕惡意指令碼
-
對使用者的提交內容進行編碼,urlEncoder、javascriptEncoder
-
少用HtmlString 和 HtmlHepler.Raw
-
身份資訊cookie 設定為httponly.
-
避免使用path 傳遞帶有不受信的字元,使用query 進行傳遞
前面兩個都是防範的,第三個基本前後端分離也沒啥人用,第四個是這樣子的,前文提及到的cookie安全問題,因為如果是在同域名的情況下,注入的指令碼是可以讀取到cookie資訊的,那麼就被攻擊到,故而設定httponly,處於js不可讀狀態。
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { options.Cookie.HttpOnly = true; })
設定HttpOnly如上。
如果要從根源上解決,就要避免被注入指令碼,這個可以使用一些框架,或者和安全公司合作。
結
下一節跨域請求的攻擊問題。