日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

csp php,CSP学习笔记(持续学习更新)

發布時間:2025/3/21 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 csp php,CSP学习笔记(持续学习更新) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CSP——Content Security Policy

大佬光輝照耀我-學習鏈接

百度百科:CSP指的是內容安全策略,為了緩解很大一部分潛在的跨站腳本問題,瀏覽器的擴展程序系統引入了內容安全策略(CSP)的一般概念。這將引入一些相當嚴格的策略,會使擴展程序在默認情況下更加安全,開發者可以創建并強制應用一些規則,管理網站允許加載的內容。

Content Security Policy 最早在firefox 23中實現,當時使用的是 X-Content-Security-Policy,它使用了前置詞的內容安全性策略,并以W3C CSP1.0規范作為標準。

按照我的理解,CSP就是高級白名單機制,并且限制了網站的很多訪問行為。

CSP編寫網站:https://www.cspisawesome.com/

CSP語法以及范例

header("Content-Security-Policy:

default-src 'none';

connect-src 'self';

frame-src 'self';

script-src xxxx/js/

'sha256-KcMxZjpVxhUhzZiwuZ82bc0vAhYbUJsxyCXODP5ulto='

'sha256-u++5+hMvnsKeoBWohJxxO3U9yHQHZU+2damUA6wnikQ=' ;

font-src xxxx/fonts/ fonts.gstatic.com;

style-src xxxx/css/ fonts.googleapis.com;

img-src 'self'

");

有那么一丟丟長....里面包括了各種各樣的寫法:

1、none和self,none代表什么都不匹配,self代表匹配同源的來源

2、https://xxx/js/匹配目錄下所有文件,https://xxx/js/file.js匹配特殊文件

3、第三種是類似于https:,會匹配所有包含這個特殊的格式的來源。

4、也有可能是example.com這樣的,會匹配所有這個host的來源,或者會有*.example.com,會匹配這個host的所有子域。

5、第五種是類似于nonce-qwertyu12345會匹配一個特殊的節點。

6、當然還有加密過的類似于sha256-abcd…同樣會匹配頁面中一個特殊的節點(每次修改這個值都會改變)。

感覺下面這個是一個比較詳細的字段說明

serialized-source-list = ( source-expression *( RWS source-expression ) ) / "'none'"

source-expression = scheme-source / host-source / keyword-source

/ nonce-source / hash-source

; Schemes:

scheme-source = scheme ":"

; scheme is defined in section 3.1 of RFC 3986.

; Hosts: "example.com" / "*.example.com" / "https://*.example.com:12/path/to/file.js"

host-source = [ scheme-part "://" ] host-part [ port-part ] [ path-part ]

scheme-part = scheme

host-part = "*" / [ "*." ] 1*host-char *( "." 1*host-char )

host-char = ALPHA / DIGIT / "-"

port-part = ":" ( 1*DIGIT / "*" )

path-part = path

; path is defined in section 3.3 of RFC 3986.

; Keywords:

keyword-source = "'self'" / "'unsafe-inline'" / "'unsafe-eval'"

; Nonces: 'nonce-[nonce goes here]'

nonce-source = "'nonce-" base64-value "'"

base64-value = 1*( ALPHA / DIGIT / "+" / "/" / "-" / "_" )*2( "=" )

; Digests: 'sha256-[digest goes here]'

hash-source = "'" hash-algorithm "-" base64-value "'"

hash-algorithm = "sha256" / "sha384" / "sha512"

CSP屬性

大佬的文章講的很好很好,這里不轉載贅述啦,總之就是不同屬性的對應不同屬性請求作用規則。

圖片簡單說明

不同的配置參數

Bypass CSP

xxxx-src *

這個規則里的*符號表示,允許除了內聯函數以外所有的url式的請求,這基本上就隨意開火了。

xxxx-src self

一般來說,self代表只接受符合同源策略的url,這樣一來,大部分的xss和crsf都會失效,有個標簽比較例外,雖然已經被加入的現在的csp草案中,但是的確還沒有施行(這里的現在大概是16年,現在可不好說)。

這種請求在firefox上會被攔截(除非同源),其余的現在不好說

此外,也可以在當前域上傳,如果有上傳,直接加載就行了,完全么有限制。

攻擊范例

不知道有多少人了解過cctf2016,其中有一道web題目IDS-Chicken

題目環境就符合我說的情況,CSP滴水不漏,幾乎沒辦法用任何方式構造xss,但是內網存在上傳點,上傳文件會被重寫為文件,link包含形成xss漏洞。

script-src 'unsafe-inline'

如果加上這個參數,就不會阻止內聯腳本,但這被認為是不安全的。

對于這個屬性有個特殊的配置叫unsafe-eval,他會允許下面幾個函數

eval()

Function()

setTimeout() with an initial argument which is not callable.

setInterval() with an initial argument which is not callable.

我們先嘗試構造payload

payload

可以明顯的看到被攔了

攔截信息

但是我們嘗試構造內聯腳本

內聯腳本

能看到成功執行

結果

由于同源策略,這個請求不能發往別的域下,但是實戰環境中利用方式很多,就比如這個聊天版,可以通過發給別的用戶的方式get cookie

var xmlhttp=new XMLHttpRequest();

xmlhttp.open("POST","submit.php",true);

xmlhttp.setRequestHeader(_Ctent-type_,_applicati/x-www-form-urlencoded_);

xmlhttp.send(_to=lorexxar&&message=_+document.cookie);

;

302 Bypass CSP

來源:https://lorexxar.cn/2016/10/31/csp-then2/

首先要意識到如果我們構造一個重定向,就可以bypass CSP的域限制

測試頁面(test.php):

header("Content-Security-Policy: script-src http://127.0.0.1/ http://xss.cc/the_only_allow_dir/");

?>

csp header test

整個站都在/test/下,/test/js/下包含正常的js.

條件一:必須有可以重定向的頁面

假設第一個域下的某個位置有個可以定義重定向的頁面,比如

這里測試的時候寫在了根目錄下,不過是要是域內允許的任何為之都可以,這樣的功能一般多出現在登陸頁面

條件二:我們需要一個被允許的域

比如 http://127.0.0.1/ 里一般會有js目錄被允許,然后可能存在upload域可以上傳一個js。這里我們允許了http://xss.cc/the_only_allow_dir/這個域,然后在http://xss.cc/myjs/a.js里面寫入js內容,比如 alert(2333)這種。

然后訪問測試頁面(test.php),就會重定向過去。

其它Bypass方式

CSP困境以及升級

總結

以上是生活随笔為你收集整理的csp php,CSP学习笔记(持续学习更新)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。