zoukankan      html  css  js  c++  java
  • ASP.NET MVC AntiForgeryToken

    你开发一个网站,其中有个功能:新闻发布。

    你是这样实现的:

    1.保存新闻的方法是:/News/Save  POST提交

    2.接受两个参数:title和content

    有一天,你登录网站(浏览器会保存相关cookie),发布了一条新闻,发布成功。

    然后打开了NSFW网站(你站点的相关cookie还在),这个网站等你很久了,他知道你的新闻发布功能的实现,于是在页面中嵌入一段脚本,模拟参数,请求你的保存方法。当然,还带着你的站点的cookie。

    你的程序代码当然的处理成功了,所以一条新闻就发布成功了。而整个过程,你还懵逼着。

    这个就是CSRF。Cross-site request forgery的缩写,中文名称叫跨站请求伪造。

    名词很高大上,写在PPT里忽悠几句还能拿个风投。但简单理解就是:攻击者盗用了你的身份,以你的名义发送恶意请求。

    重点在“伪造”,如果你能保证你访问每一个网站,都清除上个网站的痕迹的话,你就可以避免此攻击。但是,可能吗?NO!

    所以,要在程序层面进行防御,重点是让攻击者无法伪造

    ASP.NET MVC的做法是:Html.AntiForgeryToken()

    会在页面上生成这样一个隐藏域:

    提交到服务端,使用ValidateAntiForgeryToken特性验证:

    如果服务端请求中没有__RequestVerificationToken参数:

    或者参数的值不一致:

    这样,就能很大程度上防止伪造,进行CSRF攻击了。

  • 相关阅读:
    [iOS UI进阶
    [iOS UI进阶
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    为什么会使用内部临时表
    Django日志模块配置
    mysql join语句分析(一)
    mysql误删数据以及kill语句工作原理
  • 原文地址:https://www.cnblogs.com/talentzemin/p/7199815.html
Copyright © 2011-2022 走看看