百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

系统安全不求人:开发者必学的漏洞防御秘籍

myzbx 2024-12-12 13:38 26 浏览

专业在线打字练习平台-巧手打字通:只输出有价值的知识。

一 数据库操作,要谨慎

1.1 SQL注入,危害大

通过SQL注入等方式,把用户输入的数据当做代码执行。

简单场景举例:假如程序里有以下基于订单号查询订单的SQL语句,订单号是用户从页面传递过来的:

"SELECT * FROM my_order WHERE order_no = '" + OrderNo+ "'";

如果黑客构造了如下订单号参数:666'; drop table my_order--

那么最终实际执行的SQL语句将会如下:

SELECT * FROM my_order WHERE order_no = '666'; drop table my_order --'

查询订单的语义,就变成了查询完订单后,再执行一个drop表的操作,而这个操作,就是用户构造的恶意攻击命令!

如果应用没有做有效的参数校验及脱敏处理,后台数据库也没有做权限约束,该sql注入的危害是极大的。

1.2 SQL隐式转换,需留意

你知道吗?下面的语句是能够被正常执行的:

select * from my_order where order_no = "test"=0; // 相当于:where order_no = 1
update my_order set my_status="WHERE my_status=" = "yyy" ; // 相当于:update my_order set my_status = 0

查询操作主要影响的是数据返回的结果集,而更新操作则直接关系到整张表中数据的准确性和完整性。因此,在执行SQL语句之前,进行严格的正确性检查是极其必要的。

二 跨站脚本攻击,要防御

Cross Site Scripting:跨站脚本攻击,有时也缩写为XSS。
攻击者会在网页中嵌入恶意脚本,一旦用户浏览该页面,这些隐藏的恶意代码就会被执行,进而实现攻击者的特定目的。

举个HTML页面渲染攻击的例子:

<span>$!orderNo</span>
<input type="hidden" name="oriSearchText" value="$!keyWord" $disabledFlag />
<script> var callback="$!response.script"</script>

这段代码就有可能被黑客利用,弹出木马链接,获取本地登录会话信息等:

<span><iframe src="Hacker Url"></iframe></span>
<input type="hidden" name="oriSearchText" value=""> <iframe src="Hacker Url"></iframe>" <"" $disabledFlag />
<script> var callback=";hackerFunction4GetYourSession(document.cookie)"</script>

XSS(跨站脚本攻击)的核心问题在于用户提交的HTML代码未经充分过滤和转义就直接被页面回显,为解决这类安全隐患,必须对用户输入的数据进行严格的转换和脱敏处理。

三 跨站请求伪造,需甄别

Cross Site Request Forgery:即跨站请求伪造,有时也缩写为XSRF。攻击者通过诱导用户在已登录的Web应用程序上执行恶意操作,比如诱导用户触发应用的URL请求或填写欺骗性表单,实质上是利用了应用的会话(session)机制,非法冒用已认证用户的身份,对应用执行未经授权的恶意GET/POST请求,以篡改用户数据。

3.1 实施步骤举例

  1. 黑客首先在服务器端精心编写恶意脚本,并构造出包含授信操作的特定URL,比如用于提交评论的链接。
  2. 接着,恶意用户利用这一漏洞,在回复帖子时插入图片,而图片的来源地址则巧妙地指向黑客预先设置好的恶意脚本。
  3. 当无辜的用户浏览这些包含恶意图片链接的帖子时,浏览器会自动请求加载这些图片,从而在不知不觉中执行了黑客的恶意脚本。
  4. 恶意脚本进一步利用302重定向技术,根据帖子内容的不同,将用户重定向至预先设定的、包含敏感操作(如评论提交)的URL,从而在不经过用户明确授权的情况下执行恶意操作。

上述示例虽仅聚焦于引导用户跳转至评论区作为演示,但实际上,黑客的手段远不止于此。他们还可能精心构造伪装成用户登录页面的URL,企图诱骗用户输入个人密码;或是设计看似合法的支付页面URL,以套取用户的支付密码等高度敏感的核心信息。这些操作在用户毫无察觉的情况下进行,其潜在危害极为严重。

3.2 如何防御XSRF攻击

可以采用以下几种策略:

  1. 使用CSRF令牌(Token)

这是最常见和有效的防御方法。服务器生成一个唯一的CSRF令牌,并将其嵌入到每个表单或请求中。当客户端提交请求时,这个令牌会作为请求的一部分被发送。服务器在收到请求后,会验证令牌的有效性,确保请求来自受信任的源。这种方法可以有效防止CSRF攻击,因为攻击者很难预测或伪造这个令牌。

  1. 双重验证

对于重要的操作,如转账、修改密码等,可以实施双重验证机制。除了用户密码外,还需要额外的验证信息,如短信验证码、指纹识别等。这样即使攻击者成功构造了CSRF请求,也无法通过双重验证,从而无法完成攻击。

  1. 使用HTTPS

确保Web应用程序使用HTTPS协议进行通信。HTTPS可以加密客户端和服务器之间的数据传输,防止攻击者在中间截获或篡改请求。虽然HTTPS本身并不直接防御CSRF攻击,但它可以增强整体的安全性,降低攻击成功的可能性。

  1. 验证请求的来源(Referer检查)

服务器可以检查请求的Referer头部,以判断请求是否来自受信任的源。然而,这种方法并不是百分之百可靠的,因为Referer头部可以被伪造或在某些情况下被浏览器省略。因此,它通常作为额外的防御措施,而不是主要的防御手段。

  1. 设置SameSite Cookie属性

对于敏感操作相关的Cookie,可以设置SameSite属性为Strict或Lax。这样,浏览器就不会在跨站请求中发送这些Cookie,从而有效防止CSRF攻击。但是,需要注意的是,这种方法可能会影响一些合法的跨站请求,因此需要根据实际情况进行配置。

四 越权操作,要杜绝

4.1 水平越权 VS 垂直越权

水平越权控制:“基于数据的访问控制” 设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞;

未经检验和加密的参数漏洞是引发水平越权漏洞的基础。当系统直接依据用户提交的手机号发送验证码时,若缺乏有效的验证机制,攻击者便可通过编写自动化脚本,轻易发起短信轰炸攻击。

更为安全稳妥的做法是,依据当前已登录用户的唯一标识,通过后端服务查询并确认其对应的手机号,而非直接采纳前端输入的参数(鉴于所有来自前端的数据均视为潜在的不安全输入)。

或许有人会质疑,既然获取当前登录用户信息也依赖于前端传递的会话标识(如cookie、session ID),那么这些标识是否就绝对可靠呢?

答案是否定的。尽管通过跨站脚本(XSS)等手段存在会话劫持的风险,但值得注意的是,会话标识的实现通常融合了多重安全机制,包括加密、时效控制及防篡改策略等,相较于普通业务参数而言,这些措施显著增强了数据的安全性,提供了更为坚实的防护屏障。

垂直越权控制: “基于URL的访问控制” 设计缺陷引起的漏洞,又叫做权限提升攻击。由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

4.2 越权举例说明

  1. 登录用户A时,正常更改或者是查看A的用户信息;
  2. 然后抓取数据包,将业务传参ID篡改为其他用户的;
  3. 如果成功查看或者修改了同权限其他用户信息就属于水平越权;
  4. 如果可以获得到更高权限用户(管理员)的操作能力(删除)就是垂直越权;

五 安全漏洞,要规避

把握住传参就能把握住逻辑漏洞的命脉。

5.1 规避策略分类

  • 白名单校验:接受已知的合法数据集。
  • 黑名单校验:拒绝已知的非法数据集;
  • 白名单净化:对任何不属于已验证合法字符数据中的字符进行净化,然后再使用净化后的数据,净化的方式包括删除、编码、替换;
  • 黑名单净化:剔除或者转换某些字符(例如,删除引号、转换成HTML实体,防止SQL注入);

5.2 提示文案,也有风险

  • 为提升用户体验,众多系统在注册流程中增设了手机号与邮箱的查重功能,即时反馈如“该手机号已注册!”的提示信息给用户。然而,这种做法不经意间提供了可遍历的接口,增加了注册用户信息泄露的风险,因此必须实施合理的请求频率限制措施以保障安全。
  • 在涉及手机号短信注册、登录、密码找回及邮箱验证等敏感操作中,若直接将验证码(或验证凭证)嵌入交互请求中,则可能面临被恶意攻击者拦截的风险,进而导致验证机制形同虚设。为防止验证流程被轻易绕过,必须优化验证逻辑设计,确保验证信息的安全传输与验证过程的有效执行。

总结

本文全面剖析了系统安全面临的多个关键领域,包括数据、应用、权限及设计等方面,详细阐述了这些领域内影响系统安全的典型场景。

  • 在数据安全层面,文章重点指出了SQL注入这一严重威胁,它利用应用程序的漏洞,恶意篡改SQL语句,进而窃取或破坏数据库中的敏感信息。同时,也提醒了SQL隐式转换虽提升了编程效率,但其潜在的风险不容忽视,特别是在数据类型处理上需格外谨慎,以防安全漏洞的产生。
  • 针对网页安全,本文强调了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)这两种常见且危险的攻击方式,并指出需通过实施内容安全策略等有效防御措施来加以应对。
  • 在权限管理领域,文章深入分析了水平越权和垂直越权这两种复杂的权限问题,强调了构建精细的访问控制策略对于防范此类风险的重要性。
  • 此外,设计安全方面也被纳入讨论范畴,特别是指出了提示文案设计时的敏感性,强调需谨慎处理,以避免误导用户或泄露敏感信息。

综上所述,构建一个稳固的安全防护体系,需要采取一系列综合性的策略,包括但不限于加强输入验证、推广使用参数化查询、实施严格的安全编码规范、部署高效的防御机制,以及加强权限审计与管理等。这些措施的共同作用,将有效保障用户数据与应用的安全,显著降低安全风险。

相关推荐

一键生成高颜值图表!让你的文字瞬间有画面感,职场人必备!

哈喽,打工人们!忙碌的周中,大熊又来给你们带来一个超实用的效率神器啦!这次的宝藏网站绝对是那种用过就离不开的"真香"型产品!假设你明天就要做重要汇报,可面对一大堆密密麻麻的文字材料,你...

批量将 Word 转换为 PDF/Excel/Txt/图片等多种格式

Word文档是我们工作中经常会打交道的一种文档格式,我们也经常会有需要对Word文档进行格式转换的需求,比如将Word格式转换为PDF、将Word文档转换为Excel、将Word...

绝了!一键用AI生成高颜值动态PPT(附详细步骤+Prompt)

大家好,我是一名酷爱研究AI的产品经理,最近我有个新发现:那些花了你3天做出来的PPT,现在用AI可以1小时搞定!而且颜值还高!为什么AI做PPT比传统方式效率高10倍?我用一张图就能告诉你:AI生成...

ztext - 简单几行代码创建酷炫3D特效文字的开源JS库

把网页上的文字变成酷炫的3D风格,还能制作旋转动效,有了ztext.js,只需要几行代码。ztext能做什么ztext.js是一个能把常规的平面文字变成3D样式的前端开源代码库,让开发者...

文字内插入小图片,也太可爱了吧(文字中怎么插图片)

图文排版H5手机版秀米有小伙伴留言问添加图片的时候可不可以把图片添加到文字之间比如下面这句话中的小贴纸图片后面可以接着输入文字其实吧这就是咱们的『文字内插入小图片』功能嘛可以用来在文字内加个表情包又...

Linux环境下C++代码性能分析方法(linux怎么写c++代码)

技术背景在开发C++应用程序时,找出代码中运行缓慢的部分是进行性能优化的关键。在Linux系统上,有多种工具和方法可用于对C++代码进行性能分析,每种方法都有其特点和适用场景。实现步骤手动中断调试法在...

SVG互动图文,让你的文章更有趣!教你4种简单易学的黑科技玩法!

如果你是一个公众号创作者,那么你一定想知道如何让你的文章更加吸引人,更加有趣,更加有创意。你可能已经尝试过各种图文排版技巧,但是你是否知道,有一种黑科技可以让你的文章变得更加酷炫,更加互动,更加爆款?...

Videoscribe怎么实现实心中文汉字的手绘制作

很多朋友在制作手绘视频的时候,不知道怎么输入实心的中文汉字,之前我们已经给大家分享了怎么输入汉字的方法,但是有一点遗憾的是输出的汉字是空心的手绘展示,在视觉上并不是非常的美观。经过大家不断的探索,终于...

一款用于将文本转化成图表的现代化脚本语言

大家好,又见面了,我是GitHub精选君!今天要给大家推荐一个GitHub开源项目terrastruct/d2,该项目在GitHub有超过10.3kStar,用一句话介绍该项目就是:...

探秘 Web 水印技术(制作水印网站)

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

不忍心卸载的五款神仙工具(不忍心卸载的五款神仙工具是什么)

001.效率工具uTools-装机必备的生产力工具集uTools是一款非常强大的可以装下几乎所有效率工具的电脑生产力工具集,目前拥有Windows、Mac和Linux三个版本。软件界面...

「SVG」飞花令!这份最高检工作报告“超有料”

原标题:【SVG】飞花令!这份最高检工作报告“超有料”栏目主编:秦红文字编辑:沈佳灵来源:作者:最高人民检察院...

svg|2025政府工作报告,有没有你关心的数据?

··<setattributeName="visibility"begin="click+0s"dur="1ms"fill="freeze"restart="never"to="hi...

videoscribe只能输入英文,如何输入中文文本?

videoscribe只能输入英文,如何输入中文文本?打开VideoScribe软件,打开要添加中文字体的位置。打开Photoshop并在文件中创建一个新的透明背景图层。注意:必须是透明背景层。...

五个流行的SVG在线编辑器(svg编辑工具)

随着响应网络的发展,越来越多的高质量的SVG在线编辑器被公众所熟知。SVG矢量图形也越来越受欢迎,以便在任何设备上呈现图像,甚至一些易于使用的SVG在线编辑器,可以替代PS,本文总结了五种流行的SVG...