Xss跨站指令碼攻擊

2021-08-21 13:15:22 字數 2445 閱讀 7965

1.內容

攻擊者在web網頁中插入惡意js**,當使用者瀏覽該瀏覽器頁面的時候,嵌入web中的js**會被執行,從而受到惡意攻擊,這就是跨站指令碼攻擊。xss指令碼植入方式前台接收資料存入資料庫,在渲染頁面時從資料庫中讀取相應資訊

2>分類

1)反射性的xss:發出請求時,xss**出現在url中,作為輸入提交到伺服器端,伺服器端解析後響應,xss**隨響應內容一起傳回給瀏覽器,最後瀏覽器解析執行xss**。這就是反射性的xss

2)儲存形的xss:儲存型xss和反射型xss的差別僅在於儲存性xss提交的**會儲存在伺服器端,下次請求目標頁面時不用再提交xss**

3)dom xss:dom xss和反射型xss、儲存型xss的差別在於dom xss的**並不需要伺服器參與,觸發xss靠的是瀏覽器端的dom解析,完全是客戶端的事情。

觸發方式為:

3>防禦

xss防禦的總體思路是:對輸入和url引數進行過濾,對輸出進行編碼

1.對輸入和url引數進行過濾(白名單和黑名單)

黑名單:黑名單是列出不能出現的物件的清單,一旦出現就進行處理

白名單:白名單是列出可被接受的內容,一般使用白名單,它比較嚴格

2.對輸出進行編碼

輸出資料之前對潛在的威脅的字元進行編碼、轉義,比如:在html中對<,>,&,』,」進行轉義為< 轉成 <> 轉成 >& 轉成 &" 轉成 "

' 轉成 '

$, 

3.csp內容安全策略(content security policy)

1》定義:

他跟轉義不一樣,它實際上是定義頁面上哪一些內容是可被信任的,哪一些內容是不被信任的。因為我們自己的指令碼是預先就知道並放在頁面上的,所以我們可以設定好信任關係,當有 xss 指令碼出現時,它並不在我們的信任列表中,因此可以阻止它執行。

2》使用方法

它的具體使用方式是在 http 頭中輸出 csp 策略:

content-security-policy: ;

從語法上可以看到,乙個頭可以輸出多個策略,每乙個策略由乙個指令和指令對應的值組成。指令可以理解為指定內容型別的,比如script-src指令用於指定指令碼,img-src用於指定。值則主要是**,比如某個指定的url,或者self表示同源,或者unsafe-inline表示在頁面上直接出現的指令碼等。

3》缺點

csp 來處理 xss 攻擊還是不如轉義來得優雅,因為轉義可以不影響使用者輸入輸出,不改變內容的本質。但是 csp 提供了足夠簡單而又靈活的方式來防禦 xss ,可以很好地作為我們前端 xss 防禦的最後一道防線。

4》例子

content-security-policy: script-src 'self';

這樣除了在同乙個網域名稱下的js檔案外,其它的指令碼都不可以執行了,自然之前 xss 的內容也就失效啦。

4>httponly 與 xss防禦

1》內容

對於一些敏感的cookie我們採用httponly,對於一些需要在應用程式中用js操作的cookie我們就不予設定,這樣就保障了cookie資訊的安全也保證了應用。

這樣做的原因是因為xss 一般利用js指令碼讀取使用者瀏覽器中的cookie,如果你設定了httponly,你在瀏覽器的 document物件中就看不到cookie了,而我們獲取cookie是從document物件中獲得的,但是瀏覽器在瀏覽的時候不受任何影響

2》使用方式

1. 原理不同

xss攻擊是攻擊者在web網頁中插入惡意js**,當使用者瀏覽該瀏覽器頁面的時候,嵌入web中的js**會被執行,從而受到惡意攻擊,

csrf攻擊是挾持使用者在當前已登入的web應用程式上執行非本意的操作的一種攻擊方式。

2. 發生場景不同

xss攻擊是使用者登入某**,在該**做其他操作時發生的;

csrf攻擊是使用者登入**a,沒登出的時間段內登入不安全的**b時發生的;

3.直接導致攻擊結果的主體不同

xss攻擊,攻擊者獲取了使用者的身份資訊後,攻擊者進行後續操作導致攻擊結果;

csrf攻擊,攻擊者在使用者瀏覽不安全**時主動導致攻擊結果是強迫瀏覽器發起攻擊。

4.csrf比xss更難防範和危險

跨站指令碼攻擊 XSS

跨站指令碼攻擊,cross site script,為了區別css,英文縮寫為xss xss攻擊,通常指hacker通過 html注入 篡改了網頁,插入惡意的指令碼,從而在使用者瀏覽網頁時,控制使用者瀏覽器的一種攻擊。xss根據效果的不同可以分為如下幾類 1.反射型xss 通過將使用者輸入的資料 反...

xss 跨站指令碼攻擊

這是乙個非常簡單的攻擊。兩個頁面如下 out.print request.getparameter content 如果攻擊者在輸入框裡面輸入以下內容 那麼就有以下結果 當然,使用者還可以輸入 不僅可以注入script,還可以直接注入html http localhost 8080 test myj...

跨站指令碼攻擊(XSS)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 事件背景 定期對各個應用進行安全檢測,當然,其中的一種檢測方式是通過webscan360,發現多個 存在跨站指令碼攻擊漏洞。下面是360的描述 漏洞型別 跨站指令碼攻擊 xss 所屬程式語言 php 描述 目標存在跨站指令...