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

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

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

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

一 数据库操作,要谨慎

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)这两种常见且危险的攻击方式,并指出需通过实施内容安全策略等有效防御措施来加以应对。
  • 在权限管理领域,文章深入分析了水平越权和垂直越权这两种复杂的权限问题,强调了构建精细的访问控制策略对于防范此类风险的重要性。
  • 此外,设计安全方面也被纳入讨论范畴,特别是指出了提示文案设计时的敏感性,强调需谨慎处理,以避免误导用户或泄露敏感信息。

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

相关推荐

Django零基础速成指南:快速打造带用户系统的博客平台

#python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...

iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点

这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...

iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具

本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...

SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统

今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...

SpringCloud自定义Bootstrap配置指南

在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...

Python使用Dash开发网页应用(三)(python网页开发教程)

PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...

Oxygen XML Editor 27.1 中的新功能

OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...

【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力

一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...

谐云课堂 | 一文详解分布式改造理论与实战

01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...

基于Abaqus的手动挡换挡机构可靠性仿真

手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...

【pytorch】目标检测:彻底搞懂YOLOv5详解

YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...

超实用!50个非常实用的PS快捷键命令大全分享

今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...

Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)

邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...

Ganglia监控安装总结(监控安装工作总结)

一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...

谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能

AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...