一,
Web
服务端安全
1.SQL
注入攻击
名词解释:
SQL
注入攻击(
SQL Injection
),简称注入攻击,
SQL
注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。由于在设计程序时,忽略了对输入字符串中夹带的
SQL
指令的检查,被数据库误认为是正常的
SQL
指令而运行,从而使数据库受到攻击,可能导致数据被窃取,更改,删除,甚至执行系统命令等,以及进一步导致网站被嵌入恶意代码,被植入后门程序等危害。
常见发生位置:
1)
URL 参数提交,主要为GET 请求参数;
2)
表单提交,主要是POST 请求,也包括GET 请求;
3)
Cookie 参数提交;
4)
HTTP 请求头部的一些可修改的值,比如Referer ,User_Agent 等;
5)
一些边缘的输入点,比如.mp3 ,图片文件的一些文件信息等。
防御措施:
1)
使用预编译语句一般来说,防御。SQL 注入的最佳方式,就是使用预编译语句,绑定变量,但对现有代码的改动量较大;
2)
使用存储过程使用安全的存储过程可在一定程度上对抗。SQL 注入,但要注意此种方法并不是100%安全;
3)
严格检查用户数据。对用户传入的数据类型及内容进行严格的检查。对数据类型检查,如利用ID 查询时判断是否为整型,输入邮箱时判断邮箱格式,输入时间,日期等必须严格按照时间,时期格式等;对数据内容进行检查,如严格检测用户提交数据中是否包含敏感字符或字符串,是否匹配某种注入规则,严格转义特殊字符等注意此种方法虽然便于实施,但容易产生误报和漏报,且容易被绕过;
4)
其他。使用安全的编码函数,统一各数据层编码格式(如统一使用UTF-8 等),严格限制数据库用户权限,定期进行代码黑盒白盒扫描,避免将错误信息显示到页面等。
2.
文件上传
名词解释:
文件上传漏洞是由指定的程序代码未对用户提交的文件进行严格的分析和检查,导致攻击者可以上传可执行的代码文件,从而获取
Web
应用程序的控制权限(
Getshell
)。
常见发生位置:
1)
所有使用到上传功能的位置;
2)
用户可自定义的头像,背景图片等;
3)
富文本编辑器中的文件上传功能。
防御措施:
1)
上传目录设置为不可执行;
2)
严格判断文件类型,使用白名单而不是黑名单(注意大小写问题)。需要注意的是一些与Web服务器相关的漏洞所造成的问题,如Apache ,IIS ,Nginx 等的文件解析漏洞;
3)
使用随机数改写上传后的文件名和文件路径;
4)
单独设置文件服务器及域名。
3.
权限漏洞
名词解释:
访问控制是指用户对系统所有访问的权限控制,通常包括水平权限和垂直权限。访问控制问题是所有业务系统都可能产生的逻辑类漏洞,很难通过日常的安全工具扫描或防护,通常会造成大量用户数据泄露事件。
水平越权:同一权限(角色)级别的用户之间所产生的问题,如
甲
用户可以未授权访问
乙
用户的数据等;
垂直越权:不同权限(角色)级别的用户之间所产生的问题,如普通用户可未授权进行管理操作,未登录用户可以访问需授权应用等。
常见发生位置:
1)
所有涉及到与用户相关数据的位置,如用户资料,地址,订单等;
2)
所有涉及到登录及权限控制的位置,如后台登录,当前用户权限校验等。
防御措施:
1)
对于所有涉及到用户数据的操作,严格判断当前用户的身份;
2)
对于所有需要权限控制的位置,严格校验用户权限级别。
4.
暴力破解
名词解释:
暴力破解是指攻击者通过遍历或字典的方式,向目标发起大量请求,通过判断返回数据包的特征来找出正确的验证信息,从而绕过验证机制。随着互联网众多网站的数据库被泄露,攻击者选择的样本可以更具针对性,暴力破解的成功率也在不断上升。
常见发生位置:
1)
用户登录处的账号密码暴力破解;
2)
人机验证机制容易绕过,如使用较易识别的验证码;
3)
找回密码或二次身份验证等可能用到的手机短信验证码;
防御措施:
1)
强制使用强密码,并定期修改;
2)
限制密码错误尝试次数;
3)
使用强人机验证机制;
4)
限制一定时间内的高频访问次数。
5.
拒绝服务攻击
名词解释:
拒绝服务攻击(
DoS
,
Denial of Service
)是利用合理的请求造成资源过载,从而导致服务不可用的一种攻击方式。分为针对
Web
应用层的攻击,客户端
/ APP
的攻击。
常见发生位置:
1)
Web 层常见于会大量消耗资源的位置,如查找功能等;
2)
客户端/ APP 常见于异常输入数据造成的程度崩溃。
防御措施:
针对
Web
层
DoS
:
1)
限制每个客户端的请求频率;
2)
使用验证码过滤自动攻击者;
3)
做好应用代码的性能优化,网络架构优化等;
针对客户端
/ APP
拒绝服务攻击:
1)
删除不必要的组件;
2)
对用户输入数据进行过滤和检查。
6.
敏感信息泄露
名词解释:
敏感信息泄露是指包括用户信息,企业员工信息,内部资料等不应当被外部访问到的数据通过网站,接口,外部存储等途径被未授权泄露到外部的漏洞。信息泄露漏洞会导致大量用户或企业信息被恶意利用,进行诈骗,账户窃取等,给用户和企业带来严重的不良影响。并且信息一旦信息被泄露,影响会很难消除。
常见发生位置:
1)
获取用户,企业信息等数据的网站或客户端接口;
2)
企业可访问到的外部存储,如网盘,邮箱等;
3)
其他一切可能泄露数据的途径。
防御措施:
1)
对数据接口进行严格的权限检查和访问限制;
2)
划分企业安全边界,限制内部数据外流,如禁止访问外部存储应用等;
3)
提高员工数据安全意识。
7.
业务逻辑漏洞
名词解释:
业务逻辑漏洞是指由于业务在设计时考虑不全所产生的流程或逻辑上的漏洞,如用户找回密码缺陷,攻击者可重置任意用户密码;如短信炸弹漏洞,攻击者可无限制利用接口发送短信,恶意消耗企业短信资费,骚扰用户等。由于业务逻辑漏洞跟业务问题贴合紧密,常规的安全设备无法有效检测出,多数需要人工根据业务场景及特点进行分析检测。
常见发生位置:
所有涉及到用户交互的位置。
防御措施:
针对业务场景进行全面的检测。
8.
安全配置缺陷
包括
:文件遍历,源码泄露,配置文件泄露等。
文件遍历:可以浏览服务器
的Web
目录下的文件列表,可能会泄露重要文件;
源码泄露:可以查到的
网络
程序的源代码;
配置文件泄露:
Web
服务器及程度代码的配置文件泄露等。
防御措施:
1)
检查所有可能存在安全配置问题的点,在满足业务需求的情况下,最大化安全配置。
二,
Web
客户端安全
1.
跨站
脚本
攻击(XSS
)
名词解释:
跨站脚本攻击(
XSS,跨站脚本
)通常指黑客通过“
HTML
注入”篡改了网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
XSS
漏洞可被用于用户身份窃取(特别是管理员),行为劫持,挂马,蠕虫,钓鱼等。
XSS
是目前客户端
网络
安全中最重要的漏洞。
XSS
按效果的不同可以分为
3
种:
a。
反射XSS :需要诱使用户点击才能成功;
b。
存储XSS :XSS 攻击代码存储在服务器中,由于用户可能会主动浏览被攻击页面,此种方法危害较大;
C。
DOM XSS :通过修改页面的DOM 节点形成XSS ,严格来讲也可以为反馈型XSS 。
常见发生位置:
1)
所有涉及到用户可控的输入输出点,如个人信息,文章,留言等。
防御措施:
1)
对重要的Cookie的字段使用中HTTPOnly 参数;
2)
检查所有用户可控输入对所有的输入点进行严格的检查,过滤或拦截所有不符合当前语境的输入由于无法预期所有可能的输出点语境,此种方法效果较差。;
3)
检查所有用户输入的输出点。因为XSS 最终攻击是发生在输出点,因此需要分析出用户输入数据的所有输出点的环境,是输入在HTML 标签中,还是HTML 属性,