有效防范CSRF攻击的手段有哪些?

有效防范CSRF攻击的手段有哪些?,第1张

  此前,我为大家介绍过SSRF攻击、XSS攻击以及SQL注入攻击的原理及防范手段,本篇文章我将为大家介绍一下CSRF攻击-跨站请求伪造。那么CSRF攻击是什么防范手段有哪些具体内容请看下文。

 CSRF攻击是什么

 CSRF,全拼为Cross-site request forgery,也被称为one-click attack或者session

riding,中文名称叫跨站请求伪造。一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误认为是用户的真实操作而去执行命令。常用于盗用账号、转账、发送虚假消息等。

 攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。

 CSRF攻击防范手段有哪些

 第一、验证HTTP Referer字段

 HTTP头中的Referer字段记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF攻击。

 第二、使用验证码

 关键操作页面加上验证码,后台收到请求后通过判断验证码可以防御CSRF。但这种方法对用户不太友好。

 第三、在请求地址中添加token并验证

 CSRF攻击之所以成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于cookie中。可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。这种方法要比检查Referer要安全,token可以在用户登陆后产生并放于session中,然后在每次请求时把token从session中拿出,与请求中的token进行比对,但这种方法的难点在于如何把token以参数的形式加入请求。

 对于get请求,token将附在请求地址之后,这样URL就变成:http://urlcsrftoken=tokenvalue。

 对于post请求,要在form的最后加上<input

type="hidden" name="csrftoken" value="tokenvalue"/>,这样就把token以参数的形式加入请求了。

 第四、在HTTP头中自定义属性并验证

 这种方法也是使用token并进行验证,和上一种方法不同的是,这里并不是把token以参数的形式置于HTTP请求中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这样解决了上种方法在请求中加入token的不便;同时,通过XMLHttpRequest请求的地址不会被记录到浏览器的地址栏,也不用担心token会透过Referer泄露到其他网站中去。

目 录  第1章 XSS初探 1  11 跨站脚本介绍 1  111 什么是XSS跨站脚本 2  112 XSS跨站脚本实例 4  113 XSS漏洞的危害 6  12 XSS的分类 8  121 反射型XSS 8  122 持久型XSS 10  13 XSS的简单发掘 12  131 搭建测试环境 12  132 发掘反射型的XSS 12  133 发掘持久型的XSS 15  14 XSS Cheat Sheet 18  15 XSS构造剖析 21  151 绕过XSS-Filter 22  152 利用字符编码 33  153 拆分跨站法 37  16 Shellcode的调用 39  161 动态调用远程JavaScript 40  162 使用windowlocationhash 41  163 XSS Downloader 41  164 备选存储技术 43  第2章 XSS利用方式剖析 45  21 Cookie窃取攻击剖析 45  211 Cookie基础介绍 46  212 Cookie会话攻击原理剖析 48  213 Cookie欺骗实例剖析 49  22 会话劫持剖析 51  221 了解Session机制 51  222 XSS实现权限提升 52  223 获取网站Webshell 55  23 网络钓鱼 57  231 XSS Phishing 57  232 XSS钓鱼的方式 59  233 高级钓鱼技术 60  24 XSS History Hack 63  241 链接样式和getComputedStyle() 64  242 JavaScript/CSS history hack 64  243 窃取搜索查询 65  25 客户端信息刺探 67  251 JavaScript实现端口扫描 67  252 截获剪贴板内容 68  253 获取客户端IP地址 70  26 其他恶意攻击剖析 71  261 网页挂马 71  262 DOS和DDOS 72  263 XSS Virus/Worm 73  第3章 XSS测试和工具剖析 75  31 Firebug 75  32 Tamper Data 80  33 Live HTTP Headers 82  34 Fiddler 84  35 XSS-Proxy 86  36 XSS Shell 90  37 AttackAPI 94  38 Anehta 98  第4章 发掘XSS漏洞 104  41 黑盒工具测试 104  42 黑盒手动测试 107  43 源代码安全审计 110  44 JavaScript代码分析 118  441 DOM简介 118  442 第三种XSS——DOM XSS 120  443 发掘基于DOM的XSS 123  45 发掘Flash XSS 126  46 巧用语言特性 129  461 PHP 4 phpinfo() XSS 130  462 $_SERVER[PHP_SELF] 131  463 变量覆盖 132  第5章 XSS Worm剖析 135  51 Web 20应用安全 135  511 改变世界的Web 20 135  512 浅谈Web 20的安全性 137  52 Ajax技术指南 138  521 使用Ajax 139  522 XMLHttpRequest对象 140  523 HTTP请求 142  524 HTTP响应 142  53 浏览器安全 145  531 沙箱 145  532 同源安全策略 146  54 XSS Worm介绍 147  541 蠕虫病毒剖析 147  542 XSS Worm攻击原理剖析 148  543 XSS Worm剖析 149  544 运用DOM技术 150  55 新浪微博蠕虫分析 153  第6章 Flash应用安全 156  61 Flash简介 156  611 Flash Player 与SWF 156  612 嵌入Flash文件 158  613 ActionScript语言 158  62 Flash安全模型 160  621 Flash安全沙箱 161  622 Cross Domain Policy 162  623 设置管理器 164  63 Flash客户端攻击剖析 165  631 getURL() &amp; XSS 165  632 Cross Site Flashing 169  633 Flash参数型注入 171  634 Flash钓鱼剖析 173  64 利用Flash进行XSS攻击剖析 174  65 利用Flash进行CSRF 178  第7章 深入XSS原理 181  71 深入浅出CSRF 182  711 CSRF原理剖析 182  712 CSRF实例讲解剖析 185  713 CSRF的应用剖析 187  72 Hacking JSON 187  721 JSON概述 187  722 跨域JSON注入剖析 190  723 JSON Hijacking 191  73 HTTP Response Splitting 193  731 HTTP Header 193  732 CRLF Injection原理 195  733 校内网HRS案例 197  74 MHTML协议的安全 199  75 利用Data URIs进行XSS剖析 203  751 Data URIs介绍 203  752 Data URIs XSS 204  753 vBulletin Data URIs XSS 206  76 UTF-7 BOM XSS 206  77 浏览器插件安全 211  771 Flash后门 211  772 来自PDF的XSS 213  773 QuickTime XSS 217  78 特殊的XSS应用场景剖析 218  781 基于Cookie的XSS 218  782 来自RSS的XSS 220  783 应用软件中的XSS 222  79 浏览器差异 225  791 跨浏览器的不兼容性 226  792 IE嗅探机制与XSS 226  793 浏览器差异与XSS 228  710 字符集编码隐患 231  第8章 防御XSS攻击 234  81 使用XSS Filter 234  811 输入过滤 235  812 输出编码 237  813 黑名单和白名单 239  82 定制过滤策略 240  83 Web安全编码规范 244  84 防御DOM-Based XSS 248  85 其他防御方式 250  851 Anti_XSS 250  852 HttpOnly Cookie 252  853 Noscript 253  854 WAF 254  86 防御CSRF攻击 255  861 使用POST替代GET 256  862 检验HTTP Referer 257  863 验证码 258  864 使用Token 259  参考文献 262

1 XSS攻击原理

XSS原称为CSS(Cross-Site Scripting),因为和层叠样式表(Cascading Style Sheets)重名,所以改称为XSS(X一般有未知的含义,还有扩展的含义)。XSS攻击涉及到三方:攻击者,用户,web server。用户是通过浏览器来访问web server上的网页,XSS攻击就是攻击者通过各种办法,在用户访问的网页中插入自己的脚本,让其在用户访问网页时在其浏览器中进行执行。攻击者通过插入的脚本的执行,来获得用户的信息,比如cookie,发送到攻击者自己的网站(跨站了)。所以称为跨站脚本攻击。XSS可以分为反射型XSS和持久性XSS,还有DOM Based XSS。(一句话,XSS就是在用户的浏览器中执行攻击者自己定制的脚本。)

11 反射型XSS

反射性XSS,也就是非持久性XSS。用户点击攻击链接,服务器解析后响应,在返回的响应内容中出现攻击者的XSS代码,被浏览器执行。一来一去,XSS攻击脚本被web server反射回来给浏览器执行,所以称为反射型XSS。

特点:

1> XSS攻击代码非持久性,也就是没有保存在web server中,而是出现在URL地址中;

2> 非持久性,那么攻击方式就不同了。一般是攻击者通过邮件,聊天软件等等方式发送攻击URL,然后用户点击来达到攻击的;

12 持久型XSS

区别就是XSS恶意代码存储在web server中,这样,每一个访问特定网页的用户,都会被攻击。

特点:

1> XSS攻击代码存储于web server上;

2> 攻击者,一般是通过网站的留言、评论、博客、日志等等功能(所有能够向web server输入内容的地方),将攻击代码存储到web server上的;

有时持久性XSS和反射型XSS是同时使用的,比如先通过对一个攻击url进行编码(来绕过xss filter),然后提交该web server(存储在web server中), 然后用户在浏览页面时,如果点击该url,就会触发一个XSS攻击。当然用户点击该url时,也可能会触发一个CSRF(Cross site request forgery)攻击。

13 DOM based XSS

基于DOM的XSS,也就是web server不参与,仅仅涉及到浏览器的XSS。比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也就导致XSS攻击的产生。过滤可以考虑采用esapi4js。

一、SQL 注入问题

SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

简单来说,就是将大部分 SQL 语句当参数传入系统中,从而获取系统中的数据。下面简单举例说明

系统中有这样一条信息 SQL 语句执行,分页查询所有用户,每页查询 20 条,并且根据指定字段进行排序,也就是说排序字段也是参数传递过来的

SQL 注入问题分析:

这样很简单的一句话 SQL,就可以把系统搞炸掉,这种方式可以实现删库跑路

以上语句会把整个 test 数据库所有内容都删掉

尽量用预编译机制,少用字符串拼接的方式传参,它是 sql 注入问题的根源。

有些特殊字符,比如:%作为 like 语句中的参数时,要对其进行转义处理。

需要对所有的异常情况进行捕获,切记接口直接返回异常信息,因为有些异常信息中包含了 sql 信息,包括:库名,表名,字段名等。攻击者拿着这些信息,就能通过 sql 注入随心所欲地攻击你的数据库了。目前比较主流的做法是,有个专门的网关服务,它统一暴露对外接口。用户请求接口时先经过它,再由它将请求转发给业务服务。这样做的好处是:能统一封装返回数据的返回体,并且如果出现异常,能返回统一的异常信息,隐藏敏感信息。此外还能做限流和权限控制。

使用 sqlMap 等待代码检测工具,它能检测 sql 注入漏洞。

需要对数据库 sql 的执行情况进行监控,有异常情况,及时邮件或短信提醒。

对生产环境的数据库建立单独的账号,只分配 DML 相关权限,且不能访问系统表。切勿在程序中直接使用管理员账号。

建立代码 review 机制,能找出部分隐藏的问题,提升代码质量。

对于不能使用预编译传参时,要么开启 druid 的 filter 防火墙,要么自己写代码逻辑过滤掉所有可能的注入关键字。

XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、 VBScript、ActiveX、 Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。

通常情况下,被用来盗用 Cookie、破坏页面结构、重定向到其他网站等

对用户输入的表单信息进行检测过滤

CSRF - Cross-Site Request Forgery - 跨站请求伪造:

攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作,CORS - Cross Origin Resourse-Sharing - 跨站资源共享,恶意访问内网敏感资源。

有效的解决办法是通过多种条件屏蔽掉非法的请求,例如 HTTP 头、参数等:

防止大规模的恶意请求,niginx 反向代理可以配置请求频率,对 ip 做限制。nginx 可以很方便地做访问控制,特别是一些偶发性的大量恶意请求,需要屏蔽处理。

屏蔽 ip 地址

屏蔽 user-agent

屏蔽代理 ip

有两种情形会需要屏蔽代理 ip:一是代理 ip 访问,二是负载均衡(real-ip 请求负载均衡服务器,再代理给后端 server)

创建 XssAndSqlHttpServletRequestWrapper 包装器,这是实现 XSS 过滤的关键,在其内重写了 getParameter,getParameterValues,getHeader 等方法,对 http 请求内的参数进行了过滤

2021-11-24

跨站点请求伪造(Cross—Site Request Forgery),伪装来自受信任用户的请求来利用受信任的网站。简单来说CSRF就是获取凭证伪造身份去做事。

详细点说:假如A网站中存在CSRF漏洞,攻击者构造一个利用的POC,发送给受害者(在浏览器中处于登陆状态),让受害者点击POC,导致受害者在A网站上的的资料被修改或者钱财被转移。

所有用户进行操作的位置都可能存在CSRF,修改信息、密码、头像。

1利用浏览器中缓存的cookie

2没有一次型的token验证

1修改受害者的一些资料、转账或者改密码

2如果获取到应用程序中的管理员cookie,攻击者完全可以控制应用的所有数据和功能

1资源包含

资源包含是在大多数介绍CSRF概念的演示或基础课程中可能看到的类型。这种类型归结为控制HTML标签(例如<image>、<audio>、<video>、<object>、<script>等)所包含的资源的攻击者。如果攻击者能够影响URL被加载的话,包含远程资源的任何标签都可以完成攻击。

2基于表单

通常在正确使用安全的请求方式时看到。攻击者创建一个想要受害者提交的表单; 其包含一个JavaScript片段,强制受害者的浏览器提交。

3XMLHttpRequest

基于XHR的CSRF通常由于SOP而以XSS有效载荷的形式出现。没有跨域资源共享策略 (Cross-Origin Resource Sharing, CORS),XHR仅限于攻击者托管自己的有效载荷的原始请求。

通过CSRF-token或者验证码来检测用户提交

验证 Referer/Content-Type

对于用户修改删除等操作最好都使用POST操作

避免全站通用的Cookie,严格设置Cookie的域

https://shahmeeramircom/methods-to-bypass-csrf-protection-on-a-web-application-3198093f6599

1跨账户使用令牌

2替换相同的长度

3从请求中删除csrf token

4解码CSRF token

5通过HTML提取CSRF token

6只使用token的静态部分

参考链接: https://websecreadthedocsio/zh/latest/vuln/csrfhtml

上一篇 <<< Web常用攻击手段-Http请求防盗链

下一篇 >>> Web常用攻击手段-上传文件漏洞

CSRF攻击: (Cross Site Request Forgery, 跨站域请求伪造),黑客通过抓包工具分析令牌、cookie等信息并伪造客户请求。

就是大家熟知的钓鱼网站。

相关文章链接:

<<< Web常用攻击手段-XSS攻击

<<< Web常用攻击手段-SQL注入

<<< Web常用攻击手段-Http请求防盗链

<<< Web常用攻击手段-上传文件漏洞

<<< Web常用攻击手段-忘记密码

<<< Web常用攻击手段-其他漏洞

<<< 安全技术--数据加密/认证技术

<<< 安全技术--Https相关知识

<<< 安全技术--接口幂等性设计

<<< 安全框架--SpringSecurity

<<< 安全框架--JWT

<<< 安全框架--OAuth2

<<< 安全架构整体设计方案

CSRF:Cross-Site Request Forgery(中文:跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件、发消息、购买商品,虚拟货币转账等。

防御手段:

验证请求来源地址;

关键操作添加验证码;

在请求地址添加 token 并验证。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/lianai/10540184.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-11-08
下一篇2023-11-08

发表评论

登录后才能评论

评论列表(0条)

    保存