Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WEB开发常见的安全漏洞和解决思路

WEB开发常见的安全漏洞和解决思路

原创
作者头像
windwei
修改于 2020-02-11 03:55:58
修改于 2020-02-11 03:55:58
2.3K00
代码可运行
举报
文章被收录于专栏:魏佳新魏佳新
运行总次数:0
代码可运行

一,SQL注入

SQL注入时web开发中最常见也是危害性最大的安全漏洞,SQL注入攻击可能会导致 服务器故障,数据泄漏,数据被恶意删除等等严重后果。

SQL注入最常见的方式有:

1.布尔型盲注

在互联网刚刚兴起的时候,该方法常常会被用来恶意登录一些安全性不高的网站:

代码语言:sql
AI代码解释
复制
SELECT * FROM users WHERE user_name ='zhangsan' and password ='mima';

如果用户在密码框里填入 'or1=1or1=',那么上面的SQL 就变成了

代码语言:sql
AI代码解释
复制
SELECT * FROM users WHERE user_name ='zhangsan' and password ='' or 1 =1 or 1='' ;

这样就可以绕过密码校验,登录为任意用户了

2.报错型注入

一个常见的语句为 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM users WHERE id=1 AND user_name ='zhangsan' 

通过修改 zhangsan 这个 入参,很容易将SQL拼接为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM users WHERE id=1 AND user_name= 'zhangsan' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(USER(),FLOOR(RAND(0)*2))X FROM information_schema.tables GROUP BY X)a) AND 1='1';

这个语句会报一个固定的错误

显然,你用来登录Mysql的用户名就暴漏了

3.union注入

这种比较好理解,就是在原来的select 语句上通过union的方式,增加新的信息,将SQL拼接为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM users WHERE id=1 AND user_name ='zhangsan' union select * from other_table 

这种方式可以查询到你的任意表的信息,严重的话可能会被脱库。

4.SQL堆叠查询

这种跟 union 类似,可以将SQL拼接为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM users WHERE id=1 AND user_name ='zhangsan' ; select * from other_table

更为严重的是,分号后面的语句时可以随意写的,如果时拼上 drop 或者 delete 之类的语句 就可以会造成删库的风险了。

SQL注入的攻击最常见,影响也最大,SQL注入的本质是将 用户本来应该传入的 “数据” 变成了 程序 会执行的“代码”,从根源上解决这个问题,就是不要让 数据变成代码,最好的方式就是预编译了。

如果时已经写完了的历史代码,修改起来非常麻烦的话,可以推荐使用腾讯云的waf ,waf 可以帮助用户解决很多安全防护的问题 :https://cloud.tencent.com/product/waf

二,CSRF漏洞

CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,攻击者盗用了你的身份,以你的身份来调用后台接口,对服务器来说这个请求是完全合法的,但是实际上,这个接口的调用,你却并不知情。

简单模拟一下整个过程如下:

1. 张三打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;网站A 有一个接口为http://www.a.com/deletedata?id=100 ,那么正常情况下,因为张三已经登录了网站A,那么他是可以直接访问这个接口的。

 2. 张三在同一浏览器中,打开一个TAB页访问网站B;网站B 上有这么一段代码 <a href ='http://www.a.com/deletedata?id=100 ' > 查看 </a> ,这样的话 如果张三在B网站上点击了 查看 这个 按钮,那么实际上 ,他就删除了 在 A网站上的 数据了。

 当然例子里是个 deletedata ,而实际上这个接口的含义也可能是查询了某个数据,甚至时转了一笔钱等等,那么影响就非常大了。

要防治CSRF 漏洞,一般有两种方法:

1.验证 HTTP Referer 字段

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理,以上示例中,如果A网站做了这个校验,那么他就可以识别出 deletedata 这个请求时来自于 B网站而不是A网站自身,就可以拒绝掉这个请求了。

这种方式最常见也最简单,但是却并不是最安全的,毕竟Referer是依赖浏览器的,每个浏览器对 Referer的实现可能不一样,对于部分浏览器,Referer 甚至是可以篡改的 。另外,由于网站会记录 Referer信息 ,在用户对隐私的问题越来越敏感的今天,可能会带来隐私风险问题。

2.在请求中增加 token 并验证;

CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,是因为黑客利用已知信息以及cookie中的未知信息 来发起了攻击,那么,如果我们添加一个不能伪造的并且不在cookie中的未知信息,那么攻击就无法产生了。因此,我们可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务端进行token校验,如果没有token或者token的值不正确,我们就认为这是一个非法的请求,拒绝掉他就可以了。

三,SSRF漏洞

SSRF是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。因为请求本身是由服务端发起的,因此可以通过这个请求调用到服务端的一些内部接口,探测内网的信息,攻击内网的服务等等。

可能会产生SSRF 漏洞的地方主要有:

1.能够对外发起网络请求的地方

2.请求远程服务器资源的地方

3.一些邮件系统,文件上传,文件处理系统,在线处理工具等等

举一个简单的示例:

假如 A网站有一个功能,就是用来下载一些第三方的数据的,URL 为 http://a.com/downloadurl="http://b.com/b.jpg",

执行逻辑上其实就是简单的 wget -Ob.jpg http://b.com/b.jpg 这样的。明面上,这个功能很简单,就是将一些网站 ,比如 b.com 上的 图片给下载下来保存。看起来没啥问题

但是,如果这里的参数被人利用 改成了 http://a.com/downloadurl="http://127.0.0.1/deletedata?id=1" ,那么当你执行 weget -Ob.jpg 的时候,就等于是执行了内部接口 deletedata了,这样就会对内部系统造成攻击。更深层次的,如果是用的其他一些协议,比如 downloadurl 为 file:///etc/passwd ,或者 dict://127.0.0.1:6379/info 之类的,就可以直接拿到服务器上的一些数据信息了。

防治SSRF漏洞的思路主要就是禁止对不安全的资源进行下载和访问:

1.禁用不需要的协议,仅仅允许http和https请求,并禁止30x跳转,可以防止类似于file://, gopher://, ftp:// 等引起的问题。

2.服务端的服务都需要做访问授权,避免root启动,禁止非正常用户访问服务。

3.设置URL白名单,限制内网IP的请求,过滤输入信息,严格判断输入的URL是不是安全的URL

四,越权漏洞

越权漏洞也是常见的web漏洞,一般分为分为水平越权和垂直越权两种,水平越权指的是攻击者尝试访问与他拥有相同权限的用户的资源,比如A本来是只能看A自己的用资料的,但是当他把URL 为getInfo?id=a 修改为 getInfo?id=b 后 就可以看到b的数据了。垂直越权是指普通的用户获取到了比他级别更高的用户的权限,如果普通用户获取到了管理员的权限。

1.水平越权

水平越权里,一个最常见的示例就是攻击者通过遍历ID 来进行信息的窃取。比如某个页面如下:

这个页面在显示列表时,就通过后台进行过滤,只显示了当前登录者的任务列表

任务名

查看详情

任务1

getInfo?id=1

任务2

getInfo?id=2

任务3

getInfo?id=3

列表里的数据,攻击者时没法伪造的,但是这里有一个查看详情的链接,如果这个 getInfo 接口本身没有做好鉴权的话,那么攻击者就可以通过遍历ID 的方式来查到到了所有用户的详情数据了,严重的甚至可能会被脱库。

2.垂直越权

垂直越权的常见例子就是菜单的展示,比如管理员可以看到所有的菜单,包括“系统管理” 这个菜单,而其他用户是看不到 “系统管理” 这个菜单的,但是,如果某个用户通过特殊途径,获取到“系统管理” 这个菜单的URL ,他直接通过这个URL 来进行访问,发现时可以访问,这个就是产生了垂直越权的漏洞了。

要避免越权漏洞,主要还是需要从逻辑上进行完善,以下有几点建议:

1.所有的接口都要做到两层鉴权,包括接口本身的鉴权以及接口对应的数据的鉴权

2.鉴权,服务端对请求的数据和当前用户身份做校验

3.所有的鉴权都要在后台做,不能依靠前端来鉴权

4.对于会暴漏给用户的数据,尽量避免通过自增ID的方式来实现,最好有自己的生成器,让黑客没法通过遍历的方式来获取数据

5.对于特别敏感的操作,可以进行二次权限校验

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MTFlexbox自动化埋点探索
跨平台动态化技术是目前移动互联网领域的重点关注方向,它既能节约人力,又能实现业务快速上线的需求。经过十年的发展,美团App已经变成了一个承载众多业务的超级平台,众多的业务方对业务形态的快速迭代和更新提出了越来越高的要求。传统移动端“静态”的开发方式存在一系列问题,比如包体积增长过快、线上Bug修复困难、发版周期长等,已经不能满足高速发展的业务需要。因此,美团平台自研了一套跨平台动态化方案——MTFlexbox。
美团技术团队
2019/08/20
1.5K0
MTFlexbox自动化埋点探索
App 可视化埋点技术实践精要
目前数据统计已经是一个产品常见的需求趋势,尤其在业务模式探索的前期,或者产品成熟期,埋点功能更是必不可少的功能,下面将介绍最简单的App和前端全埋点方案。后续我(最新没怎么写技术文章,后台被很多人diss了)也会从产品角度全面介绍一个业务如何从0到1实现埋点。包括这个过程中遇到的所有难题。
开发者技术前线
2020/11/23
4.1K0
App 可视化埋点技术实践精要
51信用卡 Android 自动埋点实践
随着公司业务的发展,对业务团队的敏捷性和创新性提出了更高的要求,而通过大数据的手段在一定程度上可以帮助我们实现这个愿景,同时良好的数据分析可以也帮助我们进行更好更优的决策。对于数据本身,其处理流程主要可以归结为以下几点:
Android技术干货分享
2019/03/27
1.9K0
51信用卡 Android 自动埋点实践
作为测试,对于数据埋点你知道多少?
Hi,大家好。大数据时代,多数的web或app产品都会使用第三方或自己开发相应的数据系统,进行用户行为数据或其它信息数据的收集,在这个过程中,埋点是比较重要的一环。你知道什么是数据埋点吗?作为测试重点要关注哪些方面?以下就给大伙解析。
可可的测试小栈
2022/03/03
4.6K0
作为测试,对于数据埋点你知道多少?
Android 可视化埋点方案
目前统计打点已经是一个产品常见的需求,尤其在业务模式探索的前期,埋点功能更是必不可少的功能,下面将介绍最简单的app全埋点方案!
开发者技术前线
2020/11/23
4.2K0
有赞埋点实践
大数据应用一般会有采集、加工、存储、计算及可视化这几个环节。其中采集作为源头,在确保全面、准确、及时的前提下,最终加工出来的指标结果才是有价值的。
有赞coder
2020/08/25
2.9K0
有赞埋点实践
通过Vue自定义指令实现前端埋点
在营销活动中,通过埋点可以获取用户的喜好及交互习惯,从而优化流程,进一步提升用户体验,提高转化率。
前端森林
2022/03/30
3.1K1
通过Vue自定义指令实现前端埋点
项目实战-埋点系统初探
最近杂七杂八的事情比较多,难得抽出时间来弥补一下之前的系列,欠大家的埋点系列现在开始走起来
Cookieboty
2020/10/23
2.3K0
项目实战-埋点系统初探
用户行为数据采集:常见埋点方案优劣势对比及选型建议
数据采集是大数据的基石,用户在使用App、微信小程序等各种线上应用产生的行为,只有通过埋点才能进行采集。没有埋点,数据分析决策、数据化运营都是无源之水,巧妇难为无米之炊。但很多时候,“埋点”两个字却成
数据干饭人
2022/07/01
5.9K0
用户行为数据采集:常见埋点方案优劣势对比及选型建议
【埋点】是什么埋点?简述埋点的操作流程
埋点:又称为事件追踪(Event Tracking),指的是针对特定用户行为或事件进行捕获,处理和发送的相关技术及其实施过程。
不吃西红柿
2022/07/29
7.6K0
【埋点】是什么埋点?简述埋点的操作流程
京东科技埋点数据治理和平台建设实践
Tech      导读 本文核心内容聚焦为什么要埋点治理、埋点治理的方法论和实践、奇点一站式埋点管理平台的建设和创新功能。读者可以从全局角度深入了解埋点、埋点治理的整体思路和实践方法,落地的埋点工具和创新功能都有较高的实用参考价值。遵循埋点治理的方法论,本文作者团队已在实践中取得优异成效,在同行业内有突出的创新功能,未来也将继续建设数智化经营能力,持续打造更好的服务。 01  埋点治理背景 在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪
京东技术
2022/08/25
2.2K0
京东科技埋点数据治理和平台建设实践
前端工程实践之数据埋点分析系统(一)
本文首发于政采云前端团队博客:前端工程实践之数据埋点分析系统(一) https://www.zoo.team/article/data-analysis-one
政采云前端团队
2020/02/25
2K0
Android自动化页面测速在美团的实践
随着移动互联网的快速发展,移动应用越来越注重用户体验。美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度。如果发生冷启动时间过长、页面渲染时间过长、网络请求过慢等现象,就会直接影响到用户的体验,所以,如何监控整个项目的加载速度就成为我们部门面临的重要挑战。
Android技术干货分享
2019/03/27
6800
Android自动化页面测速在美团的实践
Android自动化页面测速在美团的实践
随着移动互联网的快速发展,移动应用越来越注重用户体验。美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度。如果发生冷启动时间过长、页面渲染时间过长、网络请求过慢等现象,就会直接影响到用户的体验,所以,如何监控整个项目的加载速度就成为我们部门面临的重要挑战。
美团技术团队
2019/04/08
7360
Android自动化页面测速在美团的实践
58无埋点数据采集技术在Android端实践
作为国内最大分类信息生活服务平台,58集团旗下各个产品都会投入大量人力进行用户行为的分析,来提升运营效率。但是各个产品对用户行为的分析需求基本是相似的。在这样的背景下,我们自研了WMDA 无埋点用户行为分析平台,并提供对PC、M、APP三端支持,帮助各个业务线更好的挖掘用户真实行为。
张磊BARON
2018/07/25
4.3K0
58无埋点数据采集技术在Android端实践
前端埋点上报的几种方式
在现代Web应用程序中,埋点上报是一种重要的数据收集和分析手段。本文将介绍前端埋点上报的几种常见方式,并详细阐述如何在项目中运用这些方式进行数据上报,以帮助开发者更好地进行数据收集和分析。
can4hou6joeng4
2023/11/16
1.9K0
自动化测试在美团外卖的实践与落地
总第535篇 | 2022年 第052篇 随着美团到家业务的发展,系统复杂度也在持续增长。测试用例数量近两年增长约一倍,单端数量超过1万2千条,而研发人员的工作从大部分时间在开发,转变成一半时间在开发、一半时间在模拟环境和自测。因此,引入自动化测试就显得十分有必要,本文介绍了美团外卖在自动化测试方向做的一些探索和实践,希望对从事相关领域工作的同学能够带来一些启发或帮助。 1. 项目背景 2. 项目目标 3. 方案选型 4. 实践和探索 4.1 问题和挑战 4.2 前置条件准备 4.3 用例录制与回放的数据
美团技术团队
2022/09/20
1.4K0
自动化测试在美团外卖的实践与落地
浅谈前端埋点&监控
当在回答了上述问题之后,埋点&监控便跃然纸上。因为要回答以上问题,只有通过对系统进行数据分析的方式才能弄清楚。
政采云前端团队
2022/12/01
2.7K0
浅谈前端埋点&监控
去大厂,你就应该了解前端监控和埋点!
踏足行业几年了,始终游离于中小型项目,由于项目用户较少,所以前端监控方面非常生疏,最近开始接收大流量项目,却对埋点,监控一无所知,深感惭愧,于是苦学几日,心得如下:
用户7413032
2020/06/11
3.9K0
去大厂,你就应该了解前端监控和埋点!
从 0 到 1 搭建技术中台之 iOS 可视化埋点实践
自去年开始,中台话题的热度不减,很多公司都投入到中台的建设中,从战略制定、组织架构调整、协作方式变动到技术落地实践,每个环节都可能出现各种各样的问题。技术中台最坏的状况是技术能力太差,不能支撑业务的发展,其次是技术脱离业务,不能服务业务的发展。前者是能力问题,后者是意识问题。在本专题中,伴鱼技术团队分享了从 0 到 1 搭建技术中台的过程及心得。
深度学习与Python
2020/09/23
1.3K0
从 0 到 1 搭建技术中台之 iOS 可视化埋点实践
相关推荐
MTFlexbox自动化埋点探索
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验