1. 程式人生 > 其它 >重新整理 .net core 實踐篇————防跨站指令碼攻擊[四十]

重新整理 .net core 實踐篇————防跨站指令碼攻擊[四十]

前言

簡單整理一下跨站指令碼攻擊。

正文

攻擊原理是這樣子的:

這種攻擊被攻擊的面挺多的,比如說只要有一個可以讓使用者輸入的注入指令碼就都是一個問題。

  1. 給網站注入指令碼

  2. 然後使用者訪問給網站注入的指令碼

  3. 腳本里面的請求都是對攻擊者站點的的請求

  4. 使用者資訊就被拿走了

上面這樣將可能有點蒙,舉一個以前的例子哈。

有一個站點,有一個上傳功能,但是上傳功能沒有限制,被別人注入一個一個index.html頁面,裡面是登入註冊。

然後使用者通過某些連結訪問了這個index.html,後面的請求都是訪問攻擊者的站點的請求,然後就被攻擊了。

如果這個index.html是一個充值或者登入,那麼還是非常危險的,那麼如何來做點防護措施呢?

  1. 對使用者的提交內容進行驗證,拒絕惡意指令碼

  2. 對使用者的提交內容進行編碼,urlEncoder、javascriptEncoder

  3. 少用HtmlString 和 HtmlHepler.Raw

  4. 身份資訊cookie 設定為httponly.

  5. 避免使用path 傳遞帶有不受信的字元,使用query 進行傳遞

前面兩個都是防範的,第三個基本前後端分離也沒啥人用,第四個是這樣子的,前文提及到的cookie安全問題,因為如果是在同域名的情況下,注入的指令碼是可以讀取到cookie資訊的,那麼就被攻擊到,故而設定httponly,處於js不可讀狀態。

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
	options.Cookie.HttpOnly = true;
})

設定HttpOnly如上。

如果要從根源上解決,就要避免被注入指令碼,這個可以使用一些框架,或者和安全公司合作。

下一節跨域請求的攻擊問題。