如何熟悉跨站点攻击CSRF?

1 CSRF的概念

– CSRF是英文“Cross-site request forgery”的缩写
– CSRF中文翻译为跨站请求伪造
– CSRF是一种劫持使用者在当前已经登录的WEB应用程序上执行非本意操作的攻击方法
– CSRF利用的是网站对使用者浏览器的信用

2 攻击的原理

– CSRF是攻击者通过技术手段欺骗使用者浏览器去存取曾经认证过的网站并执行非授权操作
– CSRF只能确保请求是发自某个使用者的浏览器,而不能确保请求是来自于使用者

3 保护措施

3.1 凭据同步模式

3.1.1 凭据同步模式简介

– 凭据同步模式即英文“Synchronizer token pattern”翻译
– 凭据同步模式的英文简称为“STP”

3.1.2 凭据同步模式的原理

– 当使用者传送请求时,服务器将Token(符合保密要求和具有唯一性)嵌入HTML并发送给客户端
– 客户端提交HTML表单时回传Token并由服务器接收和验证
传送给客户端浏览器的范例,

<form method="post">
    {% csrf_token %}
</form>

客户端浏览器回传的范例,

<form method="post">
    <input type="hidden" name="csrfmiddlewaretoken" value="KbyUmhTLMpYj7CD2di7JKP1P3qmLlkPt" />
</form>

3.2 检查Referer头变量

3.2.1 Referer头变量的简介

– Referer头变量属于HTTP头的一种
– Referer头变量用于标明请求来源属于哪个位置
– Referer头变量供程序判断是否与请求的域名是否一致

3.2.2 Referer的范例

– 银行转账操作的按钮的Referer标识的位置应为“bank.example.com”下
– 如果Referer标识的请求位置不是“bank.example.com”则服务器识别为恶意存取

3.2 Token凭据防护

3.2.1 Token防护的简介

– CSRF攻击本质上是欺骗使用者去访问攻击者设定的地址并截取敏感信息
– CSRF攻击的预防上要求浏览器不存储敏感数据到cookie中且发送攻击无法伪造校验凭据
– CSRF攻击时,由于攻击者无法提供正确的凭据而被服务器拒绝服务

参阅文档
===================
https://zh.wikipedia.org/zh-tw/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0

没有评论

发表评论

Linux基础
如何二进制部署Metabase?

1 基础知识 1.1 Metabase的简介 – Metabase是一款简单、开源商业智 …

Linux基础
如何安装配置Oracle客户端?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有一台服务器需要连接Oracle数据库,于是整 …

Linux基础
如何VIM替换Windows平台的换行符?

1 前言 一个问题,一篇文章,一出故事。 笔者打开一个之前在DOS平台编辑过的java配置文件发现没 …