今天主要給大家分享一下web安全這方面的知識點,對於一個web從業者來講,不得不說這是一個非常有份量的課題,近幾年網絡上頻繁出現,相關安全的危害問題,所有以今天主要是總結一下web相關的安全攻防知識點,希望對看到本篇文章的你有所幫助.

本文主要內容是分析幾種常見攻擊類型及防禦的手法,如果你對相關安全問題有所瞭解,那麼主要還是讓編碼設計的過程中時時刻刻相到這一點,在實現相關存在安全問題的代碼塊時,進行反覆測試每一個細節,防範於未然.
先來了解一下常見的web安全攻防操作吧!
一、XXS
首先說一下最常見的XSS: XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載並執行攻擊者惡意製造的網頁程序。這些惡意網頁程序通常是JavaScript,但實際上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻擊成功後,攻擊者可能得到包括但不限於更高的權限(如執行一些操作)、私密網頁內容、會話和cookie等各種內容
XSS 的原理是惡意攻擊者往 Web 頁面裡插入惡意可執行網頁腳本代碼,當用戶瀏覽該頁之時,嵌入其中 Web 裡面的腳本代碼會被執行,從而可以達到攻擊者盜取用戶信息或其他侵犯用戶安全隱私的目的。XSS 的攻擊方式千變萬化,但還是可以大致細分為幾種類型。
非持久型 XSS
非持久型 XSS 漏洞,也叫反射型 XSS 漏洞,一般是通過給別人發送帶有惡意腳本代碼參數的 URL,當 URL 地址被打開時,特有的惡意代碼參數被 HTML 解析、執行。

例如:你的 Web 頁面中包含有以下代碼:
<select>
<script>
document.write(''
+ '<option>'/<option>
+ location.href.substring(location.href.indexOf('default=') + 10)
+ ''
);
document.write('<option>源碼時代/<option>');
攻擊者可以直接通過類似以下的 URL http://www.xxx.com/xx.php?default= 注入可執行的腳本代碼
漏洞攻擊的幾點特徵:
- 即時性,可以不經過服務器存儲,直接通過 HTTP 的 GET 和 POST 請求就能完成一次攻擊,獲取到用戶隱私數據
- 觸發時需要誘騙點擊鏈接
- 反饋率低,所以較難發現和響應修復
- 盜取用戶敏感保密信息
防止漏洞攻擊必做以下幾個操作:
1 . 所有web中的數據都通過服務器端操作。
2 . 儘量避免通過 url,document.referrer,document.forms 等獲取數據直接進行渲染操作。
3 . 避免使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),
innerHTML,document.creteElement() 等可以執行字符串的操作方法。
4 . 如果避免不了,可以對獲取到的重要字符串數據進行escape 轉義編碼操作。目的是為了把特殊符號換成轉義字符,讓相應的代碼執行不了
持久型 XSS
持久型 XSS 漏洞,也被稱為存儲型 XSS 漏洞,一般存在於 Form 表單提交等交互功能,如發帖留言,提交文本信息等,攻擊者利用的 XSS 漏洞,將惡意代碼經正常功能提交進入數據庫持久保存起來,當前端頁面獲得後端從數據庫中讀出的注入代碼時,正好將有惡意的代碼渲染執行了。
其操作方式和非持久型 XSS 漏洞類似,只不過持久型是來源於後端從數據庫中讀出來的數據。
此攻擊需要同時滿足以下幾個條件:
1.POST提交表單後端沒做轉義直接存入數據庫。
2.後端取出數據直接輸出給前端。
3.前端獲取後端的數據沒做轉義直接渲染成DOM。
持久型 XSS 有以下幾個特點 :
1.持久性比較強
2.危害面廣
3.盜取用戶敏感私密信息
防止辦法:
為了防止持久性漏洞,需要前後端共同努力,後端在入庫數據時,儘量把所有的數據進行轉義處理,輸出給前端的數據也需要進行轉義處理,當然前端也需要在輸出時需要把渲染數據轉義
字符集的 XSS
由於瀏覽器對網頁中設置的字符集解析不一致,可以使用寫相關解析規則,或繞過相關規則來實現注入的操作,這叫基於字符集的XSS
如:
UTF-7 是可以將所有的 unicode 通過 7bit 來表示的一種字符集。早期多數被利用在郵件環境當中,但現在已經從 Unicode 規格中移除。這個字符集為了通過 7bit 來表示所有的文字, 除去數字和一部分的符號,其它的部分將都以 base64 編碼為基礎的方式呈現
HTML代碼
用UTF-7表示為:
+ADw-div+AD4- +YhFOhk4qU7v/AQ- +Adw-/div+AD4
同樣的,來看一下js吧
用UTF-7表示為:
+ADw-script+AD4- alert(+ACI-xss+ACI-) +ADw-/script+AD4-
防止方法:
1.記住指定
2.XML 中不僅要指定字符集為 utf-8,而且標籤要閉合
網址跳轉 XSS
在有一些特定的場景中,後端會使用url的302定向操作,把當前的網頁使用302定向到其它頁面url上進行跳轉,如果當前被定向的頁面url正好帶有用戶隱私信息,可能會被惡意者利用,進行惡意跳轉網頁
防止方法:
1.對待跳轉的 url加入白名單或者設置指定規則來進行過濾
2後端注意對敏感信息的保護, 比如 cookie 使用來源驗證。
總結:
以上為本期web安全分享內容,主要是講解XSS常用攻防技巧,如有相關興趣有困擾的小夥伴們可以進行技術交流,下期分享
閱讀更多 源碼時代 的文章