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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

跨站请求伪造(CSRF)-简述

發(fā)布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨站请求伪造(CSRF)-简述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

跨站請求偽造(CSRF)-簡述

跨站請求偽造(英語:Cross-site request forgery),也被稱為 one-click attack 或者 session riding,通常縮寫為 或者 XSRF, 是一種挾制用戶在當(dāng)前已登錄的Web應(yīng)用程序上執(zhí)行非本意的操作的攻擊方法。[1] 跟跨網(wǎng)站腳本(XSS)相比,XSS 利用的是用戶對指定網(wǎng)站的信任,CSRF 利用的是網(wǎng)站對用戶網(wǎng)頁瀏覽器的信任。(維基百科)

當(dāng)我們請求一個目標(biāo)網(wǎng)站時,瀏覽器會發(fā)送該目標(biāo)網(wǎng)站相關(guān)的cookie信息。當(dāng)我們?yōu)g覽其他的網(wǎng)站時,如果我們沒有退出該目標(biāo)網(wǎng)站,而其他的網(wǎng)站有一個向目標(biāo)網(wǎng)站的操作鏈接,這時因?yàn)槲覀冊诰€,且有cookie信息,那么目標(biāo)網(wǎng)站就會認(rèn)為這是一個合法的請求而執(zhí)行。但是這個操作不是我們自己請求的,而是惡意者用我們自己被認(rèn)證過的身份執(zhí)行的操作。

這種惡意的網(wǎng)址并不需要一個特定的網(wǎng)站,它可以藏身在任何一個由用戶生成內(nèi)容的網(wǎng)站中,如論壇,博客等。

如果有賬戶名為Alice的用戶訪問了惡意站點(diǎn),而她之前剛訪問過在線交易網(wǎng)站,登錄信息尚未過期,那么她就會損失1000資金。

Get方式攻擊:

假設(shè)一個在線交易網(wǎng)站有一個轉(zhuǎn)賬的url:

http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

一個惡意者在另一個網(wǎng)站添加了如下代碼

<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">

Post方式攻擊:

//目標(biāo)網(wǎng)站的form <form id="form" action="withdraw/trans" method="post"><input name="account" type="text"/><input name="amount" type="text"/><input name="forAccount" type="text"/> </form>

惡意鏈接

//指向惡意Html的鏈接 <img src="http://other/maliciouspage.html"/>

惡意html:

<html><head><script type="text/javascript">window.onload = function () {document.myform.submit(); }</script></head><body><form id="myform" name="myform" action="withdraw/trans" method="post"/><input name="account" type="hidden" value="Alice" /><input name="amount" type="hidden" value="1000"/><input name="forAccount" type="hidden" value="Badman"/></form> </body> </html>

惡意Html部署在http://other/maliciouspage.html。惡意鏈接在任何一個可以由用戶生成內(nèi)容的網(wǎng)站,當(dāng)有用戶是Alice瀏覽到一個有惡意鏈接的網(wǎng)站時,就會加載惡意html,執(zhí)行form方法。


@Html.AntiForgeryToken

如何避免這個惡意請求呢?

既然瀏覽器是不可信的,那么就用一個非瀏覽器的而是跟頁面自身(用戶唯一)才有的唯一隨機(jī)值作為驗(yàn)證對象。

@Html.AntiForgeryToken的驗(yàn)證流程:

生成驗(yàn)證值:

  • 當(dāng)在View中調(diào)用AntiForgeryToken時會先生成一個cookie的名稱,該名稱的前綴為"_RequestVerificationToken"。

  • 如果當(dāng)前的請求中已有該cookie,則直接對該cookie的值進(jìn)行序列化(包含加密解密操作)得到AntiForgeryData對象。如果沒有該cookie則生成一個AntiForgeryData對象。

  • 創(chuàng)建cookie,名稱為1中生成的值,值為2中AntiForgeryData對象解析后的字符串(前后值會不一樣,因?yàn)檫€有其他的隨機(jī)值作為解析參數(shù))。

  • @Html.AntiForgeryToken會生成一個名為"_RequestVerificationToken"的隱藏控件,該控件的值是根據(jù)現(xiàn)有的AntiForgeryData對象再創(chuàng)建一個新的AntiForgeryData對象,序列化的字符串。

  • 匹配驗(yàn)證值:

  • 在form提交時,服務(wù)端會先根據(jù)之前生成cookie的邏輯再次獲取到cookie名稱,如果沒有找到對應(yīng)cookie就拋出異常,如果找到該cookie,就解析解密為AntiForgeryToken對象。

  • 然后在表單中查找名稱為"_RequestVerificationToken"的控件,沒有找到拋出異常,找到的話該控件的值解析解密為AntiForgeryToken對象.

  • 隱藏控件中的AntiForgeryToken和cookie解析解密的AntiForgeryToken對象匹配,一致為合法,不一致為非法。

  • 因?yàn)?#64;Html.AntiForgeryToken的值是隨機(jī)且加密的,所以惡意html的表單里很難獲取到正確的值。

    Cookie:

    HTTP/1.1 200 OKCache-Control: privateSet-Cookie: __RequestVerificationToken_L012Y0FwcDEx=EYPOofprbB0og8vI+Pzr1unY0Ye5BihYJgoIYBqzvZDZ+hcT5QUu+fj2hvFUVTTCFAZdjgCPzxwIGsoNdEyD8nSUbgapk8Xp3+ZD8cxguUrgl0lAdFd4ZGWEYzz0IN58l5saPJpuaChVR4QaMNbilNG4y7xiN2/UCrBF80LmPO4=; path=/; HttpOnly

    Form:

    <form action="..." method="post"> <input name="__RequestVerificationToken" type="hidden" value="yvLaFQ81JVgguKECyF/oQ+pc2/6q0MuLEaF73PvY7pvxaE68lO5qgXZWhfqIk721CBS0SJZjvOjbc7o7GL3SQ3RxIW90no7FcxzR6ohHUYEKdxyfTBuAVjAuoil5miwoY8+6HNoSPbztyhMVvtCsQDtvQfyW1GNa7qvlQSqYxQW7b6nAR2W0OxNi4NgrFEqbMFrD+4CwwAg4PUWpvcQxYA==" /> </form>

    @Html.AntiForgeryToken的使用:

    //Razor: <form id="form" action="withdraw/trans" method="post">@Html.AntiForgeryToken()<input name="account" type="text"/><input name="amount" type="text"/><input name="forAccount" type="text"/> </form>//Controller:添加特性[ValidateAntiForgeryToken]且必須是HttpPost [HttpPost] [ValidateAntiForgeryToken] public ActinResult Trans(string account,double amount,string forAccount) {return View(); }

    get請求最好是只讀的,對于有操作的請求最好用post來實(shí)現(xiàn)。


    參考:

    • Aretch

    • 維基百科

    轉(zhuǎn)載于:https://www.cnblogs.com/JoeSnail/p/7743832.html

    總結(jié)

    以上是生活随笔為你收集整理的跨站请求伪造(CSRF)-简述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 草av在线| 亚洲奶汁xxxx哺乳期 | 久久久噜噜噜久久中文字幕色伊伊 | 成人高清视频免费观看 | 第一宅男av导航入口 | 91香蕉在线看 | 日韩av在线网站 | 欧美日韩国产一区在线 | 国产精品久久久久久久av | 亚洲精品偷拍视频 | 强行挺进白丝老师翘臀网站 | 国产一区二区三区色淫影院 | 蜜芽一区二区 | 国产一二三在线 | 日韩成人一区二区 | 超薄肉色丝袜一二三 | 91福利视频在线 | 午夜婷婷在线观看 | 一区二区三区资源 | 国产乱视频 | 狠狠操狠狠操狠狠操 | 激情五月五月婷婷 | 亚洲熟妇无码久久精品 | 精品国产一区二区三区四区阿崩 | 宅男噜噜噜66一区二区 | 国产av天堂无码一区二区三区 | 极品美女无套呻吟啪啪 | 久久精品在线免费观看 | 在线观看一区二区视频 | 欧美裸体按摩 | 两个小y头稚嫩紧窄h文 | 秋霞欧美一区二区三区视频免费 | 久久精品99久久久久久久久 | 亚洲精品电影在线 | 午夜精品影院 | 成人开心激情 | 国产模特av私拍大尺度 | 亚洲成人网页 | 男人日女人的网站 | 日韩欧美在线观看一区 | 国产自产21区 | 91丨porny丨九色 | 国产一区二区欧美 | 成人免费看毛片 | 国产浮力影院 | 4虎最新网址 | 老司机午夜免费福利 | 亚洲国产日韩精品 | 老头糟蹋新婚少妇系列小说 | 小视频黄色 | 影音先锋久久久久av综合网成人 | 97精品熟女少妇一区二区三区 | 超碰在线人人草 | 国产传媒中文字幕 | 中文字幕+乱码+中文乱码91 | 好吊视频一二三区 | 亚洲欧美另类一区 | 天堂8av | 中文字幕无码人妻少妇免费 | 人妻射精一区二区 | 手机在线观看免费av | 日韩一区欧美 | 一亲二脱三插 | 懂色av成人一区二区三区 | 91免费成人 | 精品国产精品三级精品av网址 | 夜色精品 | 国产精品二 | 99这里有精品 | 天堂av网站 | 国产麻豆精品久久一二三 | 三级视频网 | 在线无 | 少妇超碰| 伊人精品影院 | 日韩极品在线 | 亚洲精品成人电影 | 一区二区三区四区五区av | 国产三级久久久久 | 久久久精品影院 | 成人免费毛片高清视频 | 精品久久BBBBB精品人妻 | a级黄色小视频 | 日本老小玩hd老少配 | 麻豆久久久午夜一区二区 | 日韩高清不卡 | 疯狂揉花蒂控制高潮h | 久草高清 | 91小视频在线观看 | 日韩第一页在线 | 日韩偷拍一区 | 天天综合网永久 | 97免费在线观看视频 | 人妻少妇精品一区二区 | 91精品国自产在线 | 国产精品亚洲色图 | 四虎影| 丹丹的呻吟声1一7 | 日韩成人不卡 |