
CSRF攻击利用用户已登录的会话伪造跨站请求,SSRF攻击利用服务器端对用户输入URL的解析能力伪造内部/外部请求以获取内部资源;360通过SameSite Cookie限制Cookie跨站发送、CSP限制内容加载,增强防护。
file://localhost/c:/windows/system32/drivers/etc/hosts)、扫描内网端口(如http://127.0.0.1:3306)。类比:服务器像一个人,用户输入URL,服务器主动去访问资源,相当于服务器“主动”发起请求,利用了服务器的网络请求能力。| 特性 | CSRF(跨站请求伪造) | SSRF(服务器端请求伪造) |
|---|---|---|
| 定义 | 利用用户已登录的会话,伪造跨站请求(通常是POST/GET请求) | 利用服务器解析URL的能力,伪造内部/外部请求(服务器主动发起请求) |
| 关键特性 | 依赖用户已登录状态,请求通常是合法的(浏览器会按用户身份发送) | 服务器主动发起请求,可绕过网络限制(如内网访问) |
| 使用场景 | 登录后修改订单、提交表单(如修改密码、提交订单) | 文件读取(泄露敏感文件)、内网端口扫描(发现内网服务)、访问内部API(绕过网络限制) |
| 注意点 | 需用户点击链接或按钮,伪造请求的URL需与目标网站一致 | 需服务器解析URL(如存在URL参数),且服务器有读取/网络请求权限 |
CSRF示例:用户登录后,攻击者构造HTML链接:
<a href="https://target.com/submit?order_id=123&amount=1000">点击转账</a>
用户点击后,浏览器以用户身份发送POST请求到target.com/submit,提交订单。
SSRF示例:服务器代码(Python):
import requests
url = input("输入URL:")
response = requests.get(url)
print(response.text)
用户输入file://localhost/c:/windows/system32/drivers/etc/hosts,服务器读取文件内容,导致文件泄露。
CSRF攻击是跨站请求伪造,核心是利用用户已登录的会话,伪造跨站请求。比如用户登录后,攻击者构造一个包含表单或隐藏字段的链接,用户点击后,浏览器以用户身份发送请求,导致敏感操作(如修改订单、提交表单)。SSRF是服务器端请求伪造,利用服务器对用户输入的URL解析能力,伪造内部或外部请求。比如服务器解析用户输入的URL并请求,可读取内部文件(如hosts文件)、扫描内网端口(如http://127.0.0.1:3306)。360的防护机制包括SameSite Cookie(限制Cookie跨站发送,比如SameSite=Lax或Strict,防止CSRF)和CSP(内容安全策略,限制资源加载,防止SSRF导致加载恶意内容或泄露内部资源)。具体来说,SameSite Cookie通过设置Cookie的SameSite属性,让浏览器仅在第一方上下文发送Cookie,避免跨站伪造请求;CSP通过default-src 'self'等指令,限制服务器加载外部资源,防止SSRF利用服务器请求能力访问内部或敏感资源。
如何防范CSRF?
回答:使用CSRF Token(在表单中添加随机Token,验证请求是否合法)、SameSite Cookie(限制Cookie跨站发送)、Referer检查(但需注意Referer可能伪造)。
SSRF如何绕过CSP?
回答:CSP限制的是资源加载,SSRF是服务器主动发起请求,CSP无法阻止服务器发起请求,但可通过限制URL参数或输入验证。
360的CSP具体如何配置?
回答:假设360的CSP配置为script-src 'self'; img-src https://example.com; default-src 'self',限制脚本和图片来源,防止SSRF加载恶意内容或泄露内部资源。
CSRF和XSS的区别?
回答:CSRF是伪造请求,XSS是注入恶意脚本,CSRF需要用户点击链接,XSS需要用户访问恶意页面。
SSRF如何获取内网端口?
回答:服务器解析用户输入的URL,请求内网地址(如http://10.0.0.1:3306),通过响应内容判断端口是否开放。