如何防止XSRF攻击
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,冒充用户身份直接攻击即可。
来自: http://blog.csdn.net/newjueqi/article/details/7542409
如何防止XSRF攻击的更多相关文章
- ASP.NET WebForm中异步请求防止XSRF攻击的方法
在ASP.NET MVC中微软已经提供了如何防止跨域攻击的方法.对于传统Webfrom中使用Handler来接受ajax的Post请求数据,如何来防止XSRF攻击呢.这里给大家提供一个简单地方法,和M ...
- 使用Typescript重构axios(二十四)——防御XSRF攻击
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- beego——XSRF过滤
跨站请求伪造,简称XSRF,是Web应用中常见的一个安全问题. 当前防范 XSRF 的一种通用的方法,是对每一个用户都记录一个无法预知的token数据, 然后要求所有提交的请求(POST/PUT/DE ...
- session和xsrf
1.pip install pycket 2.pip install redis 防止xsrf攻击只需在模板form标签加入: {% module xsrf_form_html() %} <!D ...
- 跨站请求伪造(Cross-site request forgery), 简称为 XSRF
跨站请求伪造(Cross-site request forgery), 简称为 XSRF,是 Web 应用中常见的一个安全问题.前面的链接也详细讲述了 XSRF 攻击的实现方式. 当前防范 XSRF ...
- Python(九)Tornado web 框架
一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过 ...
- jsonp
一次关于JSONP的小实验与总结 前言: 今天,无意间看到自己某个文件夹下有个JSONP的东西.慢慢回忆起,这个东西是之前想写的一个demo,也不知道是多久以前了,但是不知道怎么的,给忘那边了.那 ...
- ASP.NET Web API 安全筛选器
原文:https://msdn.microsoft.com/zh-cn/magazine/dn781361.aspx 身份验证和授权是应用程序安全的基础.身份验证通过验证提供的凭据来确定用户身份,而授 ...
- 转载:关于 Token,你应该知道的十件事
关于 Token,你应该知道的十件事 原文地址:http://alvinzhu.me/blog/2014/08/26/10-things-you-should-know-about-tokens/ 原 ...
随机推荐
- HDU 4790 Just Random (2013成都J题)
Just Random Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- AN2820 Driving bipolar stepper motors using a medium-density STM32F103xx microcontroller
AN2820 Driving bipolar stepper motors using a medium-density STM32F103xx microcontroller Introductio ...
- dotNetSpider 手记
准备工作: 从github上download工程. 安装VS2017. 安装 .net core 2.0. 编译通过. 基础架构: 调度器 Scheduler 从根site开始,向 Downloade ...
- 【DevOps】谁说大象不能跳舞?
作者:范军 (Frank Fan) 新浪微博:@frankfan7 微信:frankfan7 很多企业,尤其是大企业在产品开发和运维上存在着一些普遍问题,比如开发周期长.人员合作程度不高.开发和运 ...
- Java基础加强总结(三)——代理(Proxy)
一.代理的概念 动态代理技术是整个java技术中最重要的一个技术,它是学习java框架的基础,不会动态代理技术,那么在学习Spring这些框架时是学不明白的. 动态代理技术就是用来产生一个对象的代理对 ...
- Android按键添加和处理的方案
Android按键添加和处理的方案 版本号 说明 作者 日期 1.0 Android按键添加和处理的方案 Sky Wang 2013/06/18 需求:Android机器上有个W ...
- Warning: The Copy Bundle Resources build phase contains this target's Info.plist file 'Info
WARNING: The Copy Bundle Resources build phase contains this target's Info.plist file 'Info.plist'. ...
- 【nginx】配置Nginx实现负载均衡
一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最 ...
- NoSQL现状
经过了至少4年的激烈争论,现在是对NoSQL的现状做一个阶段性结论的时候了.围绕着NoSQL发生了如此之多的事情,以至于很难对其作出一个简单概括,也很难判断它达到了什么目标以及在什么方面没有达到预期. ...
- JAVA8 List排序
先定义一个实体类 @Data @AllArgsConstructor @NoArgsConstructor public class Human { private String name; priv ...