当前位置:网站首页>Web攻击之CSRF和SSRF
Web攻击之CSRF和SSRF
2022-06-24 19:35:00 【Nice2cu_Code】
WEB攻击
一、CSRF
1. 举例
通过对银行的网站发送请求 “http://bank.example/withdraw?account=bob&amount=1000000&for=bob2”可以使 Bob把1000000块的存款转到Bob2的账号下。黑客自己做一个网站,在网站中放入如下代码: src=“http://bank.example/withdraw?account=bob&amount=1000000&for=Hacker”,并且通过广告等诱使 Bob 来访问他的网站。
当Bob访问该网站时,上述URL就会从Bob的浏览器发向银行,而这个请求会附带Bob浏览器中的 Cookie 一起发向银行服务器。如果Bob当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的Session尚未过期,浏览器的Cookie之中含有Bob的认证信息。那么这个URL请求就会得到响应,钱将从Bob的账号转移到Hacker的账号。
2. 漏洞防御方式
2.1 验证Referer字段
根据 HTTP 协议,在HTTP头中有一个字段叫Referer,它记录了该 HTTP 请求的来源地址。如果用户想要访问银行的服务器,那么该转帐请求的Referer必须是以银行域名开头的地址。
如果黑客要对银行网站实施 CSRF 攻击,他只能在他自己的网站构造请求,当用户通过黑客的网站发送请求到银行时,该请求的 Referer 是指向黑客自己的网站。
因此,要防御CSRF攻击,银行网站只需要对于每一个转账请求验证其Referer值,如果是以bank.example开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果Referer是其他网站的话,则有可能是黑客的CSRF攻击,拒绝该请求。
2.2 在请求地址中添加token并验证
攻击之所以能够成功,是因为黑客可以在不知道cookie的内容的前提下直接利用用户自己的Cookie来通过安全验证。
所以可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
二、SSRF
通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。
1. 举例
假如有个请求是www.baidu,com/xxx.php?image=URL,如果服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,那么用户可以将image参数修改为image=www.abc.com/1.jpg,用户就可以从一个服务器访问其内部的服务器。
甚至可以使用类似file:///C:/windows/win.ini读取服务器本地文件,非常危险。
2. 漏洞防御方式
- 禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///、ftp:// 等引起的问题
- 限制请求的端口为http常用的端口,比如,80,443,8080
- 将内网ip添加到黑名单。避免应用被用来获取获取内网数据,攻击内网。
3. 二者的区别
- CSRF是跨站请求伪造,伪造的是客户端,即黑客盗用用户身份
- SSRF是服务器端请求伪造,黑客盗用服务器,一般用于从外网访问内网。
边栏推荐
猜你喜欢

Description of software version selection of kt6368a Bluetooth dual-mode transparent chip

Redis+caffeine two-level cache enables smooth access speed

Servlet详解

Servlet details

First order model realizes photo moving (with tool code) | machine learning

Ideal L9, new trend of intelligent cockpit

AQS源码分析
![leetcode:515. Find the maximum value in each tree row [brainless BFS]](/img/87/1926d783fb6f8d8439213d86b5da40.png)
leetcode:515. Find the maximum value in each tree row [brainless BFS]

Flutter 如何使用在线转码工具将 JSON 转为 Model

刷题笔记(十八)--二叉树:公共祖先问题
随机推荐
DAO 中常见的投票治理方式
Double linked list implementation
Detailed installation and use of performance test tool wrk
Development trend and path of SaaS industry in China
NiO, bio, AIO
Two implementation methods of stack
Industrial development status of virtual human
PostMan工具介绍及安装使用
[200 opencv routines] 209 Color image segmentation in HSV color space
Heartless sword Chinese English bilingual poem 003 The sea of books
Servlet详解
Docker 安装 Redis-5.0.12,详细步骤
I really want to send a bunch of flowers
如何抓手机的包进行分析,Fiddler神器或许能帮到您!
Stl+ tree
985测试工程师被吊打,学历和经验到底谁更重要?
Machine learning: linear regression
How to automatically remove all . orig files in Mercurial working tree?
NIO 零拷贝
You are using pip version 21.1.2; however, version 22.1.2 is available