跨站请求伪造(CSRF)漏洞
跨站请求伪造(CSRF)漏洞
简介
CSRF(Cross-site request forgery)跨站请求伪造
攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。
常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。
本质
CSRF的本质是重要操作的所有参数都是可以被攻击者猜测到的,攻击者只有预测出请求的所有参数与参数值,才能成功构造出一个伪造的请求
因此本质,引出了业界抵御CSRF的一致方法:CSRF Token
CSRF防御
验证码
CSRF在用户不知情的情况下模拟用户构造了网络请求,通过验证码验证强制用户和应用进行交互,因此能很好地遏制CSRF攻击
但很多时候处于用户体验考虑,网站不能为所有操作加上验证码,通常验证码只是一种防御CSRF的辅助手段
Referer Check
Referer Check最常见的应用是防止图片盗链,同时也能应用在防御CSRF上。
通常请求的Referer值遵循某种规律(例如论坛发帖操作的Referer值是发帖表单页面),服务器对Referer值作检查可以抵御CSRF攻击
但是服务器并非什么时候都能提取到Referer,出于用户隐私、安全的考虑,浏览器会限制Referer的发送
CSRF Token
CSRF的本质是重要操作的所有参数都是可以被攻击者猜测到的,因此,为参数加密,或引入一些随机数,让攻击者无法猜测到参数值可以有效抵御CSRF
为请求增加一个随机的参数Token,Token应该作为一个”秘密“,为用户与服务器共同持有,在实际应用中,可以放在用户的Session或浏览器的Cookie中
使用Token时为避免泄露,尽量把Token放在表单中,敏感操作使用POST而不是GET提交
CSRF Token仅用于抵御CSRF攻击,若页面存在XSS漏洞,攻击者可以通过XSS漏洞模拟用户端模拟器进行任何操作,提取Token伪造合法的请求,这种过程称之为XSRF,与CSRF作区分
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现