自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WEB安全之XSS注入預(yù)防策略——CSP

安全 應(yīng)用安全
WEB的盛行讓這個(gè)網(wǎng)絡(luò)社會更非富,隨之而來的就是安全問題。如果何安全的接受用戶輸入并正確的顯示出來是絕大多部WEB程序的致追求。其中之一就是防止XSS,一般性而言XSS的主要危害主要是:一是頁面可能被惡意或其他原因所定制,二是有可能造成站內(nèi)數(shù)據(jù)外泄。

WEB的盛行讓這個(gè)網(wǎng)絡(luò)社會更非富,隨之而來的就是安全問題。如果何安全的接受用戶輸入并正確的顯示出來是絕大多部WEB程序的致追求。其中之一就是防止XSS,一般性而言XSS的主要危害主要是:一是頁面可能被惡意或其他原因所定制,二是有可能造成站內(nèi)數(shù)據(jù)外泄。

XSS頁面定制

現(xiàn)代WEB內(nèi)容很多由廠商和用戶共同產(chǎn)生,下面的例子說明一個(gè)由廠商和用戶共同產(chǎn)生的數(shù)據(jù):

<div class="profile">

<dl>

<dt>$title</dt>

<dd>$description</dd>

</dl>

</div>

其中$title和$description代表了兩個(gè)變量,用于輸出一個(gè)由用戶產(chǎn)生的標(biāo)題和內(nèi)容。以$title為例,如果$title中的內(nèi)容是:<script>alert(1)</script> 那么運(yùn)行后輸出到瀏覽器端的內(nèi)容即為:

<div class="profile">

<dl>

<dt><script>alert(1)</script></dt>

<dd>description</dd>

</dl>

</div>

那么這段代碼的結(jié)果只有一種可能:如大家所見會執(zhí)行這段script,這當(dāng)然不是開發(fā)者所期望的。這個(gè)頁面我們就可以理解為被定制了。也許當(dāng)你拿到了一個(gè)HOST可以信任的一個(gè)URL,但是很不幸這個(gè)URL已經(jīng)被惡意的傳播者通過XSS所定制,那么也許用戶就可能會相信這個(gè)頁面所輸出的內(nèi)容。那結(jié)果是可想而知的。為了預(yù)防這種情況。通常情況下WEB開發(fā)者會通過escape safe charactor 的方式解決(把 < 變成 &lt;  等)。但是這種預(yù)防只停留在通過轉(zhuǎn)義讓輸出和顯示與輸入一致。

這只是一種解決HTML注入的手段。從安全的角度出發(fā),https://i.xiaomi.com 應(yīng)該只允許顯示來自 https://i.xiaomi.com 的圖片。同樣的 https;://i.xiaomi.com 也只允許https://land.xiaomi.net 域名下的資源去處理 https://i.xiaom.com上的事務(wù)?;谝陨系陌踩拗贫ㄏ拢诂F(xiàn)有機(jī)制肯定是滿足不了需求了。不過幸好W3C發(fā)布了基于該種安全限定的的CSP草案。目前該草案還處于完善階段,這就意味著該草案隨時(shí)都有可能被其他規(guī)范或草案所替代,當(dāng)然也有可能放棄。不過IE10以及Webkit已經(jīng)有對該草案的實(shí)現(xiàn),有了瀏覽器廠商支持,這事就靠譜了。

什么是CSP?

CSP是由單詞 Content Security Policy 的首單詞組成,該草案旨在減少(注意這里是減少而不是消滅哦~)一種內(nèi)容注入,比如跨站腳本(可能是攻擊哦~親?。?。CSP是一種由開發(fā)者定義的安全性政策性申明。前面幾句說的太繞人了,說簡單點(diǎn)就是通過CSP所約束的的規(guī)責(zé)指定可信的內(nèi)容來源(這里的內(nèi)容可以指腳本、圖片、iframe、fton、style等等可能的遠(yuǎn)程的資源)。通過CSP協(xié)定,讓W(xué)EB處于一個(gè)安全的運(yùn)行環(huán)境中。

如何應(yīng)用

CSP可以由兩種方式指定:HTTP Header 和HTML。HTTP是在HTTP由增加Header來指定,而HTML級別則由Meta標(biāo)簽指定。CSP有兩類:Content-Security-Policy 和 Content-Security-Policy-Report-Only。(大小寫無關(guān))

HTTP header :

"Content-Security-Policy:" 策略

"Content-Security-Policy-Report-Only:" 策略

HTTP Content-Security-Policy 頭可以指定一個(gè)或多個(gè)資源是安全的,而Content-Security-Policy-Report-Only則是允許服務(wù)器檢查(非強(qiáng)制)一個(gè)策略。多個(gè)頭的策略定義由優(yōu)先采用最先定義的。( 目前Firefox使用x-Content-Security-Policy,WebKit使用X-WebKit-CSP?;蛟S在不久的將來草案最終確定下來之后會統(tǒng)一吧?)

HTML Meta :

<meta http-equiv="content-security-policy" content="策略">

<meta http-equiv="content-security-policy-report-only" content="策略">

meta標(biāo)簽與HTTP頭只是行式不同而作用是一致的。與HTTP 頭一樣,優(yōu)先采用最先定義的策略。如果HTTP頭與META定義同時(shí)存在,則優(yōu)先采用HTTP中的定義。

如果用戶瀏覽器已經(jīng)為當(dāng)前文檔執(zhí)行了一個(gè)CSP的策略,則會跳過META的定義。如果META標(biāo)簽缺少 content 屬性也同樣會跳過。

針對開發(fā)者草案中特別的提示一點(diǎn):為了使用策略生效,應(yīng)該將 meta 元素頭放在開始位置,以防止提高人為的CSP策略注入。

當(dāng)然CSP草案還在完善之中,草案中也特別的提出了幾點(diǎn)問題,比如應(yīng)該約定一種META機(jī)制以確保文檔不會被注入惡意的CSP規(guī)則。

CSP語法

CSP策略內(nèi)容由一個(gè) ; 分隔是若干個(gè)CSP指令(每條CSP指令的前后空格會被無視掉):

policy            = [ directive *( ";" [ directive ] ) ]

每一個(gè)CSP由一個(gè) 指令名 和 一個(gè)可選的指令值 組成

directive         = *WSP [ directive-name [ WSP directive-value ] ]

directive-name    = 1*( ALPHA / DIGIT / "-" )

directive-value   = *( WSP / <VCHAR except ";" and ",">

CSP策略可以是一個(gè)指定的URL或是 協(xié)議(可選)+HOST+POST(可選)+路徑(可選)的 指令。該指令說明了資源為安全的或非安全的。

示例:

1.只允許本站資源

Content-Security-Policy: default-src ‘self’

2.允許本站的資源以及任意位置的圖片以及trustedscripts.example.com下的腳本。

&nbsp;     Content-Security-Policy: default-src ‘self’; img-src *;

script-src trustedscripts.example.com

更多關(guān)于CSP的介紹可以參考W3C的相關(guān)文檔: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#content-security-policy-header-field

一部分中文翻譯:http://www.w3.org/html/ig/zh/wiki/CSP

關(guān)于CSP的討論

首先CSP的出現(xiàn)肯定可以一定程度上的減少XSS的攻擊(因?yàn)楣舫杀咎岣撸?,但并不一定就意味著CSP普及了XSS攻擊就沒有了

資料:

JPEG網(wǎng)頁圖片病毒  http://baike.baidu.com/view/540655.htm

Shutting Down XSS with Content Sercurity Policy   http://blog.mozilla.org/security/2009/06/19/shutting-down-xss-with-content-security-policy/

Content Security Policy ( SCP ) http://developer.chrome.com/extensions/contentSecurityPolicy.html

責(zé)任編輯:藍(lán)雨淚 來源: 黑客x檔案
相關(guān)推薦

2023-04-13 07:52:59

2023-07-09 00:32:12

2013-01-28 16:44:50

2017-06-14 16:08:31

2021-05-08 15:22:31

網(wǎng)絡(luò)安全Web安全SQL

2010-08-30 11:15:38

2017-05-16 14:25:28

2018-08-07 08:54:18

2014-04-21 10:24:06

2020-12-16 13:22:37

Web安全SQL工具

2024-07-30 14:31:01

2010-09-10 14:13:11

2012-11-08 17:02:58

2019-01-15 09:24:07

2011-10-19 10:47:56

2019-09-17 10:06:46

數(shù)據(jù)庫程序員網(wǎng)絡(luò)安全

2015-02-01 09:26:10

2023-08-01 08:00:00

SQLWeb應(yīng)用安全

2018-10-11 15:20:02

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號