成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析常見的網站安全問題

安全
經過一番 996,精心打造的網站眼看就要部署上線了,但在網站正式上線之前,你有沒有想過自己的網站是否安全嗎?盡管你的網站用了很多高大上的技術,但是如果網站的安全性不足,無法保護網站的數據,甚至成為惡意程序的寄生溫床,那前面堆砌了再多的美好也都成了枉然。

 經過一番 996,精心打造的網站眼看就要部署上線了,但在網站正式上線之前,你有沒有想過自己的網站是否安全嗎?盡管你的網站用了很多高大上的技術,但是如果網站的安全性不足,無法保護網站的數據,甚至成為惡意程序的寄生溫床,那前面堆砌了再多的美好也都成了枉然。

SQL 注入

在眾多安全性漏洞中,SQL注入絕對是最嚴重但也是最好處理的一種安全漏洞。在數據庫執行查詢句時,如果將惡意用戶給出的參數直接拼接在查詢句上,就有可能發生。

舉個例子,假設原本某網站登錄驗證的查詢句長這樣: 

  1. strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"passWord +"');" 

而惡意用戶輸入的參數為: 

  1. userName = "1' OR '1'='1"
  2. passWord = "1' OR '1'='1"

由于代碼中是直接將參數與查詢句做字串做的拼接,所以 SQL 就成為了這樣: 

  1. strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');" 
  2. // 相當于 
  3. strSQL = "SELECT * FROM users;" 

這樣一來,賬號密碼就形同虛設,甚至可以拿到整個數據庫的結構(SELECT * FROM sys.tables)、任意修改、查詢數據,整個網站的數據就全部泄露了。

 

不過解決方法也很簡單,只要通過參數化查詢來避免直接將參數與查詢句拼接,并進行適當的輸入檢查、插入轉義字符、嚴格設定程序權限,就能夠有效避免 SQL 注入了。

XSS

XSS(跨站攻擊)也叫JavaScript 注入,是現代網站最頻繁出現的問題之一,它指的是網站被惡意用戶植入了其他代碼,通常發生在網站將用戶輸入的內容直接放到網站內容時。例如論壇、留言板等可以輸入任意文字的網站,惡意用戶如果寫入一小段 <script>,并且前、后端都沒有針對輸入內容做字符轉換和過濾處理,直接把用戶輸入的字串作為頁面內容的話,就有可能遭到 XSS。

常見的 XSS 有幾個類型:將惡意代碼寫入數據庫,當數據被讀取出來時就會執行的儲存型XSS;將用戶輸入的內容直接帶回頁面上的反射型XSS;以及利用 DOM 的特性,各種花式執行惡意代碼的DOM-based型XSS。

儲存型及反射型都很好理解,DOM-based 型就非常有意思了;可以參考OSWAP 整理的XSS Filter Evasion Cheat Sheet,絕大多數的 XSS 方式,都是通過各個元素的 background-image 屬性或者元素上的各種事件回調來實現;其中特別值得注意的是 SVG,由于 SVG 中可以寫入任意 HTML,還可以加上 onload 事件,如果把 SVG 當成普通圖片處理,直接作為網站內容使用,如果遇到惡意用戶的話,后果不堪設想。所以在上線上傳圖片功能時,務必要把 SVG 過濾掉!

避免 XSS 的方法其實也很簡單,只要在數據輸入輸出時做好字符轉換,使惡意代碼不被執行,而是被解析成字符就可以了。

CSRF

CSRF(跨站請求偽造)是一種利用 Cookie 及 Session 認證機制進行攻擊的手段;由于 Session 認證的其實不是用戶本人,而是瀏覽器,那么只要通過網頁DOM 元素可以跨域的機制,對已經得到認證的網站發出請求,就可以假冒用戶,從而拿到敏感信息。

例如某家銀行的轉賬 API 的URL 是這樣的: 

  1. http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName 

而惡意用戶如果在網站中塞進一個 的話:

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

當不知情的用戶瀏覽到攻擊者的網站時, 會自動發出這個請求,如果用戶登錄銀行的 Session 尚未過期,那么這個請求很可能就會被銀行接受,最后會在用戶本人不知情的情況下“被”轉帳。

這種攻擊方式可以與前面所說的 XSS 是相輔相成,例如在沒有防范 XSS 的論壇網站中植入 ,那么其 src 屬性就應該是獲取敏感信息的 API URL。

解決方法主要有以下幾種:

  • 檢查 Referer:在服務器端檢查請求頭中 Referer 的值,也就是檢查請求的來源,如果是來自允許的網站,才會正常執行 API 的功能。
  • CSRF Token:在 Cookie 及請求發送的數據中都加上 csrftoken,并檢查值是否相同,如果請求來源是自己的網站驗證就會通過;反之,由于外部網站無法在代碼中得到其他網站的 Cookie,因此無法在請求中帶上 csrftoken。
  • SameSite Cookie:在 Cookie 中加上 SameSite 屬性,確保 Cookie 僅能在自己的網站使用。

JSON 劫持

JSON 劫持是利用現代網站前后端通過 API 進行數據交換的特性,只要能獲得使用者權限,并調用獲取資料的 API,再加上改寫原生的 JavaScript 對象,就可以竊取用戶的敏感信息。

獲得權限的部分于 CSRF 相同,通過 <script> 可以跨域的特性直接使用瀏覽器用戶的 Cookie;攻擊者只需要在網頁上通過 <script> 調用獲取數據的 API 完成對數據的竊取。

例如:

  1. Object.prototype.__defineSetter__('user',function(obj){ 
  2.   for(var i in obj) { 
  3.     alert(i + '=' + obj[i]); 
  4.   } 
  5. }); 

當回傳的數據中含有 user 屬性時,由于 Setter 通過 Object.prototype.__defineSetter__ 改寫了,user 中的值會被全部讀取。 

然而 Object.prototype.__defineSetter__ 可以修改原生對象所造成的問題,早已經在 ES4 中就被修復了,JSON 劫持也因此銷聲匿跡,但是從 ES6 開始又添加了 Proxy,使 JSON 劫持又再次成為可能:

  1. <script> 
  2. <script> 
  3.   Object.setPrototypeOf( 
  4.     __proto__, 
  5.     new Proxy(__proto__, { 
  6.       has: function(target, name) { 
  7.         alert( 
  8.           name.replace(/./g, function(c) { 
  9.             c = c.charCodeAt(0) 
  10.             return String.fromCharCode(c >> 8, c & 0xff) 
  11.           }) 
  12.         ) 
  13.       } 
  14.     }) 
  15.   ) 
  16. </script> 
  17. <script charset="UTF-16BE" src="external-script-with-array-literal"></script> 

看起來很恐怖,那么該如何解決呢?除了前面所說的 CSRF Token 外,許多大公司還采用了另一種有趣的解決方式。即 API 的響應內容開頭為 for (;;);,這也是利用 了<script> 引入的 JavaScript 會立即執行的特性,把攻擊者的網站卡死在循環里。

總結

除了文中提到的四種常見的網站安全漏洞外,一個網站還有很多細節需要考慮,例如不要用明碼存儲密碼等敏感信息,針對來源 IP 做流量限制防止 DOS 等等。所以在進行網站開發時要保持安全意識,盡可能做好基本的防護措施。

 

責任編輯:華軒 來源: 前端先鋒
相關推薦

2021-08-02 18:08:53

網站安全SQL技術

2011-03-21 10:23:06

2012-12-18 13:47:01

2019-04-28 10:23:26

物聯網安全信息安全物聯網

2019-04-04 11:55:59

2023-03-09 12:30:55

2020-11-05 14:24:57

物聯網

2021-04-22 21:58:51

云計算IaaS安全

2023-06-14 11:59:55

2021-03-13 20:45:11

安全Web策略

2011-05-19 14:31:12

2021-04-20 10:54:47

云計算IaaS安全云安全

2020-04-10 08:34:58

網絡安全郵件安全網絡釣魚

2009-10-12 09:41:23

2011-09-22 13:29:43

2022-02-24 09:00:00

AD安全漏洞

2012-11-20 10:47:16

2010-01-28 10:27:55

2012-05-30 16:25:30

密碼安全

2014-10-21 10:30:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级久久 | 一级黄色毛片免费 | 欧美日韩在线播放 | 精品免费视频 | 日韩中文字幕在线观看 | 欧美精品一区二区免费视频 | 日韩欧美在线免费观看视频 | 亚洲午夜精品视频 | 日韩欧美在线不卡 | 中文字幕精品视频在线观看 | 国产精品乱码一二三区的特点 | 天天看天天干 | 国产成人av一区二区三区 | 亚洲精品国产电影 | 久久国产亚洲精品 | 我我色综合 | 欧美日韩在线一区二区三区 | 久久99精品久久久久久噜噜 | 久久亚洲国产精品日日av夜夜 | 中文在线一区 | av在线播放一区二区 | 天天玩天天干天天操 | 日本高清视频网站 | 成人啊啊啊 | 日本精品视频在线 | 亚洲成人免费视频在线观看 | 网站黄色在线 | 亚洲欧美国产精品久久 | 华丽的挑战在线观看 | 成人精品一区二区 | 91精品国产乱码久久久久久久 | 国产成人精品午夜 | 亚洲综合视频一区 | xxx.在线观看 | 欧美激情一区二区三级高清视频 | 国产精品精品 | 欧美一区二区三区在线观看视频 | 国产一伦一伦一伦 | 亚洲三区在线观看 | 免费在线观看黄视频 | 欧美精品一二三区 |