第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Html.AntiForgeryToken()

標(biāo)簽:
Html/CSS

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。(百度百科)

一个场景

加入有这样一个发布公司新闻的页面

复制代码

@{    ViewBag.Title = "News";}<h2>News</h2>@using (Html.BeginForm("PostNews", "News", FormMethod.Post)){     <input type="text" name="content" id="content" />    <input type="submit" value="Submit" />}

复制代码

控制器

复制代码

    public class NewsController : Controller    {        // GET: News        [HttpPost]        public ActionResult PostNews()        {            ViewBag.content = Request.Form["content"];            return View();        }        [HttpGet]        public ActionResult News()        {            return View();        }    }

复制代码

提交成功

此时提供给了跨站攻击的漏洞,CSRF一般依赖几个条件

(1)攻击者知道该目标站点。

(2)攻击者的目标站点具有持久化授权cookie或者受害者具有当前会话cookie

(3)目标站点没有对用户在网站行为的第二授权。

比如我们现在知道发布新闻的地址:http://localhost:28401/News/PostNews

我们下面新建一个页面test.html

复制代码

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title></head><body>    <form action="http://localhost:28401/News/PostNews" method="post">        <input type="hidden" name="content" value="你们公司网站被黑了" />        <input type="submit" name="name" value="提交" />    </form></body></html>

复制代码

发起攻击

这样在公司站点的新闻列表就被篡改了。作为安全性考虑,这种情况肯定不会让它发生的,如果涉及到公司利益,那就损失大了。

MVC中如何防范?

还好,mvc中通过在页面上使用 Html.AntiForgeryToken()配合在对应的Action上增加[ValidateAntiForgeryToken]特性来防止跨站攻击。

修改上面提交代码

@using (Html.BeginForm("PostNews", "News", FormMethod.Post)){     @Html.AntiForgeryToken()    <input type="text" name="content" id="content" />    <input type="submit" value="Submit" />}

复制代码

        [HttpPost]        [ValidateAntiForgeryToken]        public ActionResult PostNews()        {            ViewBag.content = Request.Form["content"];            return View();        }

复制代码

我们这里再次使用test.html进行提交

我们看一下Html.AntiForgeryToken()会为当前请求,生成一个名为__RequestVerificationToken的cookie,还有一个名为__RequestVerificationToken的隐藏域。

为了验证一个来自form post请求,还需要在目标action上增加[ValidateAntiForgeryToken]特性,它是一个验证过滤器,它主要检查

(1)请求的是否包含一个约定的AntiForgery名的cookie

(2)请求是否有一个Request.Form["约定的AntiForgery名"],约定的AntiForgery名的cookie和Request.Form值是否匹配

总结

在asp.net mvc中,需要加上Html.AntiForgeryToken()防止CSRF攻击,在使用ajax进行post请求的时候,需要获取到名为__RequestVerificationToken的隐藏域的值进行一起提交。

参考

http://blog.csdn.net/cpytiger/article/details/8781457

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消