系统安全不求人:开发者必学的漏洞防御秘籍
myzbx 2024-12-12 13:38 64 浏览
专业在线打字练习平台-巧手打字通:只输出有价值的知识。
一 数据库操作,要谨慎
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 实施步骤举例
- 黑客首先在服务器端精心编写恶意脚本,并构造出包含授信操作的特定URL,比如用于提交评论的链接。
- 接着,恶意用户利用这一漏洞,在回复帖子时插入图片,而图片的来源地址则巧妙地指向黑客预先设置好的恶意脚本。
- 当无辜的用户浏览这些包含恶意图片链接的帖子时,浏览器会自动请求加载这些图片,从而在不知不觉中执行了黑客的恶意脚本。
- 恶意脚本进一步利用302重定向技术,根据帖子内容的不同,将用户重定向至预先设定的、包含敏感操作(如评论提交)的URL,从而在不经过用户明确授权的情况下执行恶意操作。
上述示例虽仅聚焦于引导用户跳转至评论区作为演示,但实际上,黑客的手段远不止于此。他们还可能精心构造伪装成用户登录页面的URL,企图诱骗用户输入个人密码;或是设计看似合法的支付页面URL,以套取用户的支付密码等高度敏感的核心信息。这些操作在用户毫无察觉的情况下进行,其潜在危害极为严重。
3.2 如何防御XSRF攻击
可以采用以下几种策略:
- 使用CSRF令牌(Token)
这是最常见和有效的防御方法。服务器生成一个唯一的CSRF令牌,并将其嵌入到每个表单或请求中。当客户端提交请求时,这个令牌会作为请求的一部分被发送。服务器在收到请求后,会验证令牌的有效性,确保请求来自受信任的源。这种方法可以有效防止CSRF攻击,因为攻击者很难预测或伪造这个令牌。
- 双重验证
对于重要的操作,如转账、修改密码等,可以实施双重验证机制。除了用户密码外,还需要额外的验证信息,如短信验证码、指纹识别等。这样即使攻击者成功构造了CSRF请求,也无法通过双重验证,从而无法完成攻击。
- 使用HTTPS
确保Web应用程序使用HTTPS协议进行通信。HTTPS可以加密客户端和服务器之间的数据传输,防止攻击者在中间截获或篡改请求。虽然HTTPS本身并不直接防御CSRF攻击,但它可以增强整体的安全性,降低攻击成功的可能性。
- 验证请求的来源(Referer检查)
服务器可以检查请求的Referer头部,以判断请求是否来自受信任的源。然而,这种方法并不是百分之百可靠的,因为Referer头部可以被伪造或在某些情况下被浏览器省略。因此,它通常作为额外的防御措施,而不是主要的防御手段。
- 设置SameSite Cookie属性
对于敏感操作相关的Cookie,可以设置SameSite属性为Strict或Lax。这样,浏览器就不会在跨站请求中发送这些Cookie,从而有效防止CSRF攻击。但是,需要注意的是,这种方法可能会影响一些合法的跨站请求,因此需要根据实际情况进行配置。
四 越权操作,要杜绝
4.1 水平越权 VS 垂直越权
水平越权控制:“基于数据的访问控制” 设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞;
未经检验和加密的参数漏洞是引发水平越权漏洞的基础。当系统直接依据用户提交的手机号发送验证码时,若缺乏有效的验证机制,攻击者便可通过编写自动化脚本,轻易发起短信轰炸攻击。
更为安全稳妥的做法是,依据当前已登录用户的唯一标识,通过后端服务查询并确认其对应的手机号,而非直接采纳前端输入的参数(鉴于所有来自前端的数据均视为潜在的不安全输入)。
或许有人会质疑,既然获取当前登录用户信息也依赖于前端传递的会话标识(如cookie、session ID),那么这些标识是否就绝对可靠呢?
答案是否定的。尽管通过跨站脚本(XSS)等手段存在会话劫持的风险,但值得注意的是,会话标识的实现通常融合了多重安全机制,包括加密、时效控制及防篡改策略等,相较于普通业务参数而言,这些措施显著增强了数据的安全性,提供了更为坚实的防护屏障。
垂直越权控制: “基于URL的访问控制” 设计缺陷引起的漏洞,又叫做权限提升攻击。由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
4.2 越权举例说明
- 登录用户A时,正常更改或者是查看A的用户信息;
- 然后抓取数据包,将业务传参ID篡改为其他用户的;
- 如果成功查看或者修改了同权限其他用户信息就属于水平越权;
- 如果可以获得到更高权限用户(管理员)的操作能力(删除)就是垂直越权;
五 安全漏洞,要规避
把握住传参就能把握住逻辑漏洞的命脉。
5.1 规避策略分类
- 白名单校验:接受已知的合法数据集。
- 黑名单校验:拒绝已知的非法数据集;
- 白名单净化:对任何不属于已验证合法字符数据中的字符进行净化,然后再使用净化后的数据,净化的方式包括删除、编码、替换;
- 黑名单净化:剔除或者转换某些字符(例如,删除引号、转换成HTML实体,防止SQL注入);
5.2 提示文案,也有风险
- 为提升用户体验,众多系统在注册流程中增设了手机号与邮箱的查重功能,即时反馈如“该手机号已注册!”的提示信息给用户。然而,这种做法不经意间提供了可遍历的接口,增加了注册用户信息泄露的风险,因此必须实施合理的请求频率限制措施以保障安全。
- 在涉及手机号短信注册、登录、密码找回及邮箱验证等敏感操作中,若直接将验证码(或验证凭证)嵌入交互请求中,则可能面临被恶意攻击者拦截的风险,进而导致验证机制形同虚设。为防止验证流程被轻易绕过,必须优化验证逻辑设计,确保验证信息的安全传输与验证过程的有效执行。
总结
本文全面剖析了系统安全面临的多个关键领域,包括数据、应用、权限及设计等方面,详细阐述了这些领域内影响系统安全的典型场景。
- 在数据安全层面,文章重点指出了SQL注入这一严重威胁,它利用应用程序的漏洞,恶意篡改SQL语句,进而窃取或破坏数据库中的敏感信息。同时,也提醒了SQL隐式转换虽提升了编程效率,但其潜在的风险不容忽视,特别是在数据类型处理上需格外谨慎,以防安全漏洞的产生。
- 针对网页安全,本文强调了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)这两种常见且危险的攻击方式,并指出需通过实施内容安全策略等有效防御措施来加以应对。
- 在权限管理领域,文章深入分析了水平越权和垂直越权这两种复杂的权限问题,强调了构建精细的访问控制策略对于防范此类风险的重要性。
- 此外,设计安全方面也被纳入讨论范畴,特别是指出了提示文案设计时的敏感性,强调需谨慎处理,以避免误导用户或泄露敏感信息。
综上所述,构建一个稳固的安全防护体系,需要采取一系列综合性的策略,包括但不限于加强输入验证、推广使用参数化查询、实施严格的安全编码规范、部署高效的防御机制,以及加强权限审计与管理等。这些措施的共同作用,将有效保障用户数据与应用的安全,显著降低安全风险。
- 上一篇:如何对多实体零件添加材料明细表和零件序号
- 下一篇:markdown语法大全
相关推荐
- 如何设计一个优秀的电子商务产品详情页
-
加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...
- 怎么在JS中使用Ajax进行异步请求?
-
大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...
- 中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革
-
前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...
- 前端监控 SDK 开发分享_前端监控系统 开源
-
一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...
- Ajax 会被 fetch 取代吗?Axios 怎么办?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...
- 前端面试题《AJAX》_前端面试ajax考点汇总
-
1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...
- Ajax 详细介绍_ajax
-
1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...
- 6款可替代dreamweaver的工具_替代powerdesigner的工具
-
dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...
- 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
-
接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...
- 福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光
-
时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...
- 2021年超详细的java学习路线总结—纯干货分享
-
本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...
- 不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!
-
Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...
- 2025 年 Python 爬虫四大前沿技术:从异步到 AI
-
作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...
- 最贱超级英雄《死侍》来了!_死侍超燃
-
死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...
- 停止javascript的ajax请求,取消axios请求,取消reactfetch请求
-
一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)
