XSS攻擊 && CSRF攻擊 基礎理解
阿新 • • 發佈:2019-04-12
例如 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攻擊 基礎理解