防止CSRF攻擊的實際操作流程精簡版
以下的文章主要描述的是正確防止CSRF攻擊的實際操作流程,我在一個信譽度很好的網(wǎng)站找到一個關(guān)于正確防止CSRF攻擊的實際操作流程的資料,拿出來供大家分享,以下就是文章的詳細(xì)內(nèi)容介紹,望大家借鑒。
1.Hello World
歡迎來到嶄新的Playhack.net的新季度開題項目報告。我非常高興您能夠再次回來讓我們的c001項目重現(xiàn)。
希望您能喜歡這個新的短篇論文,我邀請你瀏覽位于http://www.playhack.net的全部新項目。
開始:幾乎沒有什么,只是一點香煙!:
吶喊:我向我的playhack m8s null,omni,god and emdel,ofc o str0ke大聲吶喊!NEX 回來了。
2.介紹
我對跨站請求偽造(Cross Site Request Forgery,即CSRF)技術(shù)有一定研究,但是對網(wǎng)站開發(fā)者應(yīng)當(dāng)采取的措施研究不深。這些日子在編寫一個對用戶和管理員(這些人對他們的任務(wù)并不明晰:P)有高度安全要求的分布式網(wǎng)站程序時,我被這個話題深刻的糾纏了。
針對這種情況,我必須考慮程序最終可能受到的各個方面的可能的攻擊威脅。
給我最多麻煩的就是Session欺騙(或者CSRF,你可以按照自己喜歡的方式稱呼),因為這種攻擊是完全以用戶的身份,因此并沒有百分百的可能性來防止它。
如果你對我剛才說所的Session欺騙并不太了解,那么你可以閱讀:http://www.playhack.net/view.php?id=30
3.可行措施
Ok,從這里開始,我必須假定你對Session欺騙攻擊的實施方法已經(jīng)深刻領(lǐng)會了:P
讓我們開始新的繼續(xù)。
考慮到一個已經(jīng)登錄到網(wǎng)站的受信用戶可以完成一些重要的或者私密的操作,攻擊者嘗試記性一個可能的登錄攻擊(但是大多數(shù)情況下是不可行的)并且得到已經(jīng)登錄用戶的Session來實現(xiàn)其巧妙的行為。
為了劫持用戶的Seession,入侵者精心構(gòu)造一個適當(dāng)?shù)木W(wǎng)頁,在這個網(wǎng)頁中包含了隱藏的JavaScript函數(shù)來重新創(chuàng)造一個原始操作表單,但是攻擊者卻修改了一些表單值,然后攻擊者讓受攻擊者訪問該頁面,此時頁面加載過程會提交上述表單到一個遠(yuǎn)程頁面,以隱秘地完成一個請求(此時受攻擊者并不知道),他們用這種方法利用了用戶的受信身份。
這種方式簡單解釋了Session欺騙攻擊是如何工作的,但是一個重要的問題是,“我如何避免我的用戶成為這種攻擊的受害者?”
現(xiàn)在,你可能想到如下的幾種方法:
檢查Cookies憑據(jù)
檢查HTTP請求來路
使用驗證碼
但是經(jīng)過一些嘗試,你會發(fā)現(xiàn)這些方法不是我們應(yīng)當(dāng)采取的最合適的解決方式,讓我們一個個的來看為什么。
3.1 Cookies Hashing
第一個方案可能是解決這個問題的最簡單和快捷的方案了,因為攻擊者不能夠獲得被攻擊者的Cookies內(nèi)容,也就不能夠構(gòu)造相應(yīng)的表單。
這個問題的實現(xiàn)方法與下面的類似。在某些登錄頁面我們根據(jù)當(dāng)前的會話創(chuàng)建Cookies:
// Cookie value
$value = “Something from Somewhere”;
// Create a cookie which expires in one hour
setcookie(”cookie”, $value, time()+3600);
?>
在這里,我們在Cookies中使用了散列來使得這個表單可被認(rèn)證。
以上的相關(guān)內(nèi)容就是對防止CSRF攻擊的實際操作流程的介紹,望你能有所收獲。