CSRF攻击演示
csrf: 跨站点伪造请求Cross-site request forgery
文章图片
image
- 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
- 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
- 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
- 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
- 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
黑客 Mallory 自己在该银行也有账户,他知道上文中的 URL 可以把钱进行转帐操作。Mallory 可以自己发送一个请求给银行:http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory。但是这个请求来自 Mallory 而非 Bob,他不能通过安全认证,因此该请求不会起作用。
这时,Mallory 想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码: src=https://www.it610.com/article/”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory ”,并且通过广告等诱使 Bob 来访问他的网站。当 Bob 访问该网站时,上述 url 就会从 Bob 的浏览器发向银行,而这个请求会附带 Bob 浏览器中的 cookie 一起发向银行服务器。大多数情况下,该请求会失败,因为他要求 Bob 的认证信息。但是,如果 Bob 当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的 session 尚未过期,浏览器的 cookie 之中含有 Bob 的认证信息。这时,悲剧发生了,这个 url 请求就会得到响应,钱将从 Bob 的账号转移到 Mallory 的账号,而 Bob 当时毫不知情。等以后 Bob 发现账户钱少了,即使他去银行查询日志,他也只能发现确实有一个来自于他本人的合法请求转移了资金,没有任何被攻击的痕迹。而 Mallory 则可以拿到钱后逍遥法外。
防御手段:
- 验证HTTP Referer字段,
- 在请求地址中添加token并验证
- 在HTTP头中自定义属性并验证
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它 用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。【CSRF攻击演示】应用场景:
比如在回复一篇新闻,回复过程中,加入了恶意脚本,当这段脚本存储到数据库中后,渲染到页面中,比如是加载一段js代码,该js代码监听页面的所有输入,并通过ajax发送至攻击者的邮箱,则可以拦截用的密码数据.
防御: 对用户输入的数据,前后端都进行转义.
推荐阅读
- 简易有效Api接口防攻击策略
- Android健康管理源代码,基于Android的个人健康管理系统毕业论文+任务书++外文翻译+答辩PPT+演示视频+设计源码...
- 算法系列教程(PHP演示)
- arthas快速入门视频演示
- C语言小游戏教程P4
- 降维攻击
- 【鼎典美育】如何面对孩子的“攻击性行为”()
- 一颗麦子对另一颗麦子发起了血腥的攻击……引发了一个话题(爱是什么())
- 饱和攻击
- 基础课|使用深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索算法求解 (n^2 -1) 数码难题,耗时与内存占用(时空复杂度)对比(附((n^2 - 1) 数码问题控