博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何防止XSRF攻击
阅读量:6644 次
发布时间:2019-06-25

本文共 1156 字,大约阅读时间需要 3 分钟。

XSRF全称是 cross-site request forgery(跨站点请求伪造),也称为CSRF,是一种常见的web攻击方式。

攻击形式描述如下:

1.用户登录并访问一个正常的站点 http://www.biz.com;

2.在同一个浏览器实例下,用户打开了恶意网站 http://www.bad.com;(至于用户怎么会打开这个恶意网站,可能是恶意网站通过一些链接或者垃圾邮件等等形式诱骗用户点了某一个链接)

3.恶意网站页面里包含下面一段代码:

<form method="POST" name="evilform" target="hiddenframe"

action="https://www.biz.com/update_profile">

<input type="hidden" name="password" value="heihei">

</form>

<iframe name="hiddenframe" style="display: none">

</iframe>

<script>

document.evilform.submit();

</script>

你明白下面会发生什么了:用户在不知觉的情况下,被修改了密码。

如何防御XSRF攻击,方法比较多,比如在上面的例子中,要修改密码,必须提供旧密码,那么就可以有效的避免攻击。但是,XSRF是一个普遍存在的问题,不能所有场景下都需要用户输入一串东西,用户肯定会崩溃。

比较靠谱和通用的解决方案如下:

在进行一些改变系统数据的重要操作中(比如提交订单,修改密码,删除..等操作),加入一个供校验的action token。这个action token是由应用先前生成的(如绘制表单时),作为表单的一个hidden字段。

这个action token的生成必须要有些讲究,不能让骇客随意冒充过关,一个靠谱的生成算法如下:

action token = F(K,C),其中K是一个只有应用服务器才知道的密钥,C是本次会话的标识,如jsessionid。

应用在接受到请求时,首先校验action token是否合法,校验的方式是取出jsessionid,然后使用F(K,C)计算action token,如果计算的结果和表单提交过来的action token值一样,则放行。

这种方案可以有效的防御XSRF攻击,因为恶意网站无法知道K和C的值,无法伪造action token。

但是如果你的站点遭遇了XSS攻击,那么一切都白搭,因为骇客可以轻易的获取session cookie,冒充用户身份直接攻击即可。

来自:

转载于:https://www.cnblogs.com/time-is-life/p/6594931.html

你可能感兴趣的文章
IdentityServer Topics(6)- Windows身份验证
查看>>
(原創) 解决问题时,不要只从演算法的角度去思考 (日記)
查看>>
论操作系统对双核和多路CPU的支持
查看>>
使用Webbrowser的一点心得体会
查看>>
(筆記) 如何在Linux上使用Verilog PLI? (SOC) (Verilog PLI) (NC-Verilog) (Linux)
查看>>
五个故事说穿了很多人
查看>>
OpenGL3D图形绘制
查看>>
3D成像法:抖动
查看>>
Azure China (13) Azure China CDN经验总结
查看>>
用dynamic增强C#泛型表达力
查看>>
Windows Phone 7.1 Mango ROM 安装指南
查看>>
[转] 百万级数据查询优化
查看>>
POJ 3294 Life Forms (后缀数组)
查看>>
POJ 3228 Gold Transportation (二分+最大流) (Dinic + 二分 或 EK)
查看>>
Entity Framework ObjectContext IUnitOfWork
查看>>
C#自定义Attribute略谈
查看>>
编译原理词法分析
查看>>
Spring之AOP面向切片
查看>>
空间聚类(等回来之后完成)
查看>>
[紧急求助]如何用程序实现外部提交?针对用asp实现的文件上传程序...内网程序...
查看>>