XSS攻擊

什麼是XSS攻擊

XSS又稱CSS,全稱Cross SiteScript,跨站腳本攻擊,是Web程序中常見的漏洞,XSS屬於被動式且用於客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當其它用戶瀏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶Cookie、破壞頁面結構、重定向到其它網站等。

XSS攻擊類似於SQL注入攻擊,攻擊之前,我們先找到一個存在XSS漏洞的網站,XSS漏洞分為兩種,一種是DOM Based XSS漏洞,另一種是Stored XSS漏洞。理論上,所有可輸入的地方沒有對輸入數據進行處理的話,都會存在XSS漏洞,漏洞的危害取決於攻擊代碼的威力,攻擊代碼也不侷限於script。

百度對XSS的解釋

XSS攻擊

XSS攻擊方式

為什麼不推薦使用eval(關於安全性方面)

eval只是一個普通的函數,只不過他有一個快速通道通向編譯器,可以將string變成可執行的代碼。有類似功能的還有Function , setInterval 和 setTimeout。

關於安全性,我們經常聽到eval是魔鬼,他會引起XSS攻擊,實際上,如果我們對信息源有足夠的把握時,eval並不會引起很大的安全問題。而且不光是eval,其他方式也可能引起安全問題。比如:莫名其妙給你注入一個標<script src="">簽,或者一段來歷不明的JSON-P請求,再或者就是Ajax請求中的eval代碼… 因此,只要你的信息源不安全,你的代碼就不安全。不單單是因為eval引起的。你用eval的時候會在意XSS的問題,你越在意就越出問題,出的多了,eval就成噩夢了。

推薦閱讀:JavaScript 為什麼不推薦使用 eval?

如何防範

  1. 過濾用戶輸入
  2. 對不可信輸出編碼
  3. 安全Cookie
  4. 提高防範意識、多測試

segmentfault.com/a/1190

主要是前面三個措施,後者還需用戶提高意識

CSRF

什麼是CSRF攻擊

Cross Site Request Forgery,中文名:跨站請求偽造。其原理是攻擊者構造網站後臺某個功能介面的請求地址,誘導用戶去點擊或者用特殊方法讓該請求地址自動載入。用戶在登錄狀態下這個請求被服務端接收後會被誤以為是用戶合法的操作。對於 GET 形式的介面地址可輕易被攻擊,對於 POST 形式的介面地址也不是百分百安全,攻擊者可誘導用戶進入帶 Form 表單可用POST方式提交參數的頁面

詳情參考

淺談CSRF攻擊方式

常見網路攻擊--XSS && CSRF

如何防範

1.規範請求類型。

任何資源操作的請求,必須是POST、PUT、DELETE,總之不能是GET

2.檢查Referer

即檢查請求頭中的來源網站,從而保證此次請求來源於信任的網站。

3.設置請求Token

當我訪問頁面時,服務端會在頁面寫入一個隨機token值,並設置token生命週期。之後我的請求就必須帶上此次token值,請求過的token就會失效,無法再用。更加安全性的頁面,如登錄頁面,應該加驗證碼。

4.防住第一道防線-XSS

再次強調,如果cookie被別人拿走,任何防禦都將在理論上失效。上述的防禦手段僅僅是提高攻擊門檻。有了你的cookie,我可以直接請求你的頁面,獲取你的token,獲取你的驗證碼圖片並解析出來,然後再發起請求。而伺服器還以為這是你本人。

Https

什麼是https

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本傳輸安全協議),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認埠及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面.

詳情參考httpswiki

保證措施

伺服器給你發送非對稱加密的公鑰,你用這個公鑰來加密對稱密鑰,伺服器用非對稱的私鑰解密成對稱密鑰,再利用雙方都知道的公用密鑰來傳遞信息 利用ca證書老保證伺服器傳給你的公鑰是安全的

如何防範(加密)

1 對稱加密 : 加密和解密數據使用同一個密鑰。這種加密方式的優點是速度很快,常見對稱加密的演算法有 AES;

2 非對稱加密: 加密和解密使用不同的密鑰,叫公鑰和私鑰。數據用公鑰加密後必須用私鑰解密,數據用私鑰加密後必須用公鑰解密。一般來說私鑰自己保留好,把公鑰公開給別人,讓別人拿自己的公鑰加密數據後發給自己,這樣只有自己才能解密。 這種加密方式的特點是速度慢,CUP 開銷大,常見非對稱加密演算法有 RSA;

3 Hash: hash 是把任意長度數據經過處理變成一個長度固定唯一的字元串,但任何人拿到這個字元串無法反向解密成原始數據(解開你就是密碼學專家了),Hash 常用來驗證數據的完整性。常見 Hash 演算法有 MD5(已經不安全了)、SHA1、SHA256

參考文章

跨站請求偽造wiki

跨站腳本wiki

https-wiki


推薦閱讀:
相關文章