1. 程式人生 > >XSS攻擊 && CSRF攻擊 基礎理解

XSS攻擊 && CSRF攻擊 基礎理解

例如 ont token ans src pre 用戶 檢查 lencod

一個網站,不管多麽的帥氣,多麽的風騷,如果你不安全,那始終都是一個弟弟啊~

今天又看了下XSS和CSRF攻擊的文章,我也想發點什麽普及下大家的安全意識,畢竟作為一名擁有偉大夢想的程序員,基本的安全意識還是一定要有的,話不多說,跑起來~

  本文參考的文章地址:https://juejin.im/post/59dc2b7a6fb9a0451869ae3a

一、XSS攻擊跨站腳本攻擊(Cross Site Scripting),一般是在輸入的時候,攻擊者輸入腳本,來進行攻擊。

案例:

一個正常的輸入表單控件 輸入 :
<script>
    while (true) {
      alert(
‘我彈彈彈彈彈彈彈~~~~~‘) } </script>

這只是一個最善良的惡作劇而已,試想一下,攻擊者輸入一些盜取cookie的腳本或者一些別的惡意腳本,是不是很隨意的就可以去拿一些東西,想幹什麽我就幹什麽

預防方法:

1. 在cookie中設置httpOnly屬性後,js將無法讀取到cookie信息,可以防止XSS攻擊盜取cookie
// koa
  ctx.cookies.set(name, value, {
      httpOnly: true // 默認為 true
  })

2. 使用HtmlEncode,將一些標簽轉義
例如將<,>轉換成<,>的寫法來表示,那麽輸入的<script>標簽就會被解析成<script>

3. JavaScriptEncode,給一些字符加上反斜杠
例如將\轉換成\\,將\n轉換成\\n,將"轉換成\" 

二、CSRF:跨站點請求偽造(Cross-Site Request Forgeries),也就是冒充用戶請求,用戶並不知情,然後搞一些事情

話不多說,先放一張偷來的圖

技術分享圖片

案例:

比如某網站的轉賬操作 受害者張三給李四轉賬100, 通過對銀行的網站發起請求 bank.example/transfer?ac… , 通常情況下,該請求發出後,服務器端會檢查 session 是否合法,並且張三已經登錄成功, 黑客王五可以自己給銀行發送一個請求 bank.example/transfer?ac… ,但是這個請求來自王五,而不是張三,他並不能通過安全認證。他需要張三的 session 。
王五自己做了一個網站,放入如下代碼 bank.example/transfer?ac… , 用各種方式誘使張三點擊自己的網站。 張三登錄了銀行的網站沒有退出,訪問了黑客王五的網站,上述的 url 就會向銀行發起請求。 如果session沒有過期,這時悲劇就發生了,張三的賬戶裏少了1000。

預防方法:

1. 驗證碼的方式,也就是讓用戶和網站進行交互才能完成一些動作(請求) 缺點:用戶體驗差 2. 相對get請求來說,盡量使用post請求(post請求也只是相對安全一點) 3. token驗證
第一步:後端隨機產生一個 token,把這個token 保存到 session 狀態中;同時後端把這個token 交給前端頁面;
第二步:前端頁面提交請求時,把 token 加入到請求數據或者頭信息中,一起傳給後端;
後端驗證前端傳來的 token 與 session 是否一致,一致則合法,否則是非法請求。

寫在最後

XSS 是內容沒有做過濾處理,導致瀏覽器將攻擊者的輸入當代碼直接運行了。 CSRF 則是因為瀏覽器在發送 HTTP 請求的時候會自動攜帶 cookie,而一般網站的 session 都存在 cookie裏面

寫在最最後

若不是你突然闖進我生活,我怎會把死守的寂寞放任了~

因為最近有在抖音聽綠色這首歌,所以這次就用綠色包圍著你們好了。。。。。。。。。

XSS攻擊 && CSRF攻擊 基礎理解