收藏本站

【干货】常见的安全漏洞修复建议

SQL注入

漏洞描述
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。导致敏感信息泄漏、破坏数据库内容和结构、甚至利用数据库本身的扩展功能控制服务器操作系统。
修复建议
1.对进入数据库的特殊字符('”\尖括号&*;等)进行转义处理,或编码转换。
2.严格限制变量类型,数据库中的存储字段必须对应为int型。
3.数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
4.网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
5.严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
6.避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
7.在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。
8.确认PHP配置文件中的magic_quotes_gpc选项保持开启。

XSS

漏洞描述
xss又叫CSS(Cross-SiteScripting),跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。
修复建议:
1.编码:用户输入的数据进行HTML Entity编码。
2.过滤:移除用户上传的DOM属性,如onerror等,移除用户上传的style节点,script节点,iframe节点等。
3.校正:避免直接对HTML Entity编码,使用DOM Prase转换,校正不配对的DOM标签。

任意文件上传

漏洞描述
上传漏洞这个顾名思义,就是攻击者通过上传木马文件,直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。导致该漏洞的原因在于代码作者没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。
修复建议:
1.对文件格式限制,只允许某些格式上传。
2.对文件格式进行校验,前端跟服务器都要进行校验(前端校验扩展名,服务器校验扩展名、Content_Type等)。
3.将上传目录防止到项目工程目录之外,当做静态资源文件路径,并且对文件的权限进行设定,禁止文件下的执行权限。

任意文件下载

漏洞描述
一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。
修复建议:
1.过滤点(.)使用户在url中不能回溯上级目录。
2.正则严格判断用户输入参数的格式。
3.将下载区独立出来,放在项目路径外,给每个下载资源固定的URL,而不是所有的下载资源都是统一的URL。

任意文件读取

漏洞描述
通过提交专门设计的输入,攻击者就可以在被访问的文件系统中读取或写入任意内容,往往能够使攻击者从服务器上获取敏感信息文件。
修复建议:
1.过滤.(点)等可能的恶意字符:这个试用于能够修改线上代码,最为推荐的方法
2.正则判断用户输入的参数的格式,看输入的格式是否合法:这个方法的匹配最为准确和细致,但是有很大难度,需要大量时间配置规则。

任意文件包含

漏洞描述
通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者检验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
修复建议:
php中可以使用 open_basedir配置限制访问权限在指定区域过滤 . (点) / (斜杠) \ (反斜杠)禁止服务器远程文件包含。

代码执行漏洞

漏洞描述
远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。
修复建议:
1.建议假定所有输入都是可疑的,尝试对所有输入提交可能执行命令的构造语句进行严格的检查或者控制外部输入,系统命令执行函数的参数不允许外部传递。
2.不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
3.不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
4.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
5.在发布应用程序之前测试所有已知的威胁。

后门漏洞

漏洞描述
后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻击。
修复建议:
1.查看网站的最后修改日期,看哪个文件的修改日期“不和谐”。。
2.检查程序完整性。
3.查看被添加的管理员。
4.修改密码。
5.日志分析。

弱口令

漏洞描述
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等,因为这样的口令很容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用。
修复建议:
1.修改程序或软件默认口令。
2.口令策略应符合集团账号口令要求。
3.定期(90天或180天)更换一次口令。

未授权访问

漏洞描述
未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。
修复建议:
1.增加服务的认证配置。
2.禁止使用root权限启动本服务。
3.对服务访问时需要启用密码认证,并且添加 IP 访问限制。
4.修改服务的默认端口,采用其他端口服务,配置服务来源地址限制策略。

权限提升

漏洞描述
权限提升是指利用系统中的安全漏洞或是别的方法使得自己突破了原来的限制,能够非法访问对方目录甚至是使得自己能够向管理员那样来获取整个系统控制,简称提权。
修复建议:
1.定期进行固件、中间件的升级。
2.不要给员工设置工作之外的权限。
3.对文件格式限制,只允许某些格式上传。

越权漏洞

漏洞描述
越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改查的时候没有进行一个判断,判断所需要操作的信息是否属于对应的用户,可以导致用户A可以操作其他人的信息。​
修复建议 :
1.服务器端使用的是http服务而不是https,实际上还是可以在用户注册时通过抓包工具获取token来进行恶意操作,但加了权限认证之后黑客只能通过构造请求来对token对应的用户进行恶意操作。
2.日常开发中要多留意业务逻辑可能出现的漏洞和水平权限漏洞或者其它我未发现的漏洞,不能因为框架本身提供了基本的安全防护就对安全掉以轻心,毕竟咱要立志往服务器端发展。

逻辑漏洞

漏洞描述
逻辑错误漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误。
修复建议:
1.在输入接口设置验证。
2.注册界面的接口不要返回太多敏感信息,以防遭到黑客制作枚举字典。
3.验证码请不要以短数字来甚至,最好是以字母加数字进行组合,并且验证码需要设定时间期限。

我要评论