Web漏洞防护

OWASP top10

注入

恶意的用户通过构造恶意指令并将其带入到过滤不严(可能就未过滤)的函数中导致恶意指令被解析执行。如SQL注入、OS注入、LDAP注入。

加固

  1. 字符过滤(比如sql注入不让你输入sql中常见的关键字)
  2. 使用正则表达式过滤传输的参数(比如匹配到‘or’,‘select’等就替换为空)
  3. 前端js防范sql注入,如:
var sQuery=sUrl.substring(sUrl.indexOf("=")+1);
re=/select|update|delete|truncate|join|union|exec|insert|drop|count|'|"|;|>|<|%/i;
if(re.test(sQuery)) { alert("请勿输入非法字符");
location.href=sUrl.replace(sQuery,""); } ```
4. 数据库中限制用户权限,drop/create/select等权限谨慎grant。
5. 多使用数据库安全参数
6. 多层环境下,需要实现多层验证,在客户端与数据库端都要采用相应地措施来进行防护。
7. 要用最小的权限运行程序
8. 命令执行出错不要显示过多细节(防止攻击者利用操作的细节得到更多信息)
失效的身份认证

攻击者利用应用程序在身份认证和会话管理方面存在的缺陷,破译密码或者绕过验证实现短暂或永久的冒充受害者身份。

加固

  1. 区分公共区域和受限区域:站点的公共区域允许匿名访问,站点的受限区域仅允许指定用户访问
  2. 支持密码的有效期:向用户提供一段时间可以改密码的功能,如linux的/etc/login.defs文件
  3. 能够用禁用账户:在收到攻击后可以禁用账户来避免遭受进一步的损失
  4. 要求用户使用强密码(字母大小写、数字、特殊字符的混用)
  5. 不要在网站上明文传输数据(如FTP协议的登录信息可以抓包直接获取),为此可以采用SSL加密等。
敏感数据泄露

如一个人的密码库、财务数据、医疗数据、行程数据等都是敏感的(这些数据的敏感程度可能针对不同的人不同的情况是不同的),攻击者可能利用这些数据针对性的做出一些攻击。

加固

  1. 根据业务特点定义出系统存储的敏感信息
  2. 敏感信息的传输、存数、显示灯采用加密或脱敏等方式进行安全处理
  3. 不适用get提交敏感信息(如get提交用户名个密码会直接被看到)
  4. 用户密码为最高级的敏感信息,在存储、传输、显示时都必须加密。(如linux的用户密码加密存储在/etc/passwd和/etc/shadow中,在你输入密码的时候也不会显示出来)
  5. 优先采用非对称密码(rsa),(不建议base64这种的)
  6. 对于一些系统默认报错页面应进行重新设计自定义报错页面,以免暴露系统敏感信息。
外部实体(XXE)(我也不太懂,没怎么接触过)

XXE即XML(可扩展标记语言)外部实体注入攻击,早期或配置错误的XML处理器评估了XML文件外部实体引用, 攻击者可以利用这个漏洞窃取URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。

加固

  1. 使用开发语言提供的禁用外部实体的方法
  2. 过滤用户提交的XML数据
失效的访问控制

通过身份验证的用户可以访问自己不该访问的数据,攻击者可以利用这以漏洞去越权获取数据。

防御

  1. 除公有资源外,其他资源默认情况下拒绝访问
  2. 使用一次性的访问控制机制,并在整个应用程序中不断重用它们
  3. 建立访问控制模型以强制执行所有权记录,而不思接受用户创建、读取、更改或删除的任何记录。
  4. 用户注销后,服务器上的JWT令牌应失效。
安全配置错误

由于操作者配置不当,导致攻击者可以利用这些配置获取到更高的权限等。如有些linux将root和普通用户放在一个组,可以通过普通用户输入密码后来passwd root.

防御

  1. 使用的服务不包含任何不必要的功能、组件、文档和示例。移除或不安装不 适用的功能和框架
  2. 及时打补丁
  3. 地文件等进行权限分配时,谨遵最小权限原则
(跨站脚本)XSS(反射型、存储型、DOM型)

应用程序的网页中包含不受信任的、未经恰当验证、转义的数据或可使用HTML、JavaScript的浏览器API更新现有网页时就会出现XSS漏洞,XSS会执行攻击者在浏览器中执行的脚本,并劫持用户会话,破坏网站或用户重定向到恶意站点。

防御

  1. 对于截取cookie的XSS的防御可以再cookie上添加HttpOnly
  2. 过滤输入的数据
  3. 使用web防火墙等安全设备或软件对此类漏洞在外围进行检测和防护
不安全的反序列化

不安全的反序列化可导致远程代码执行、重放攻击、注入攻击或特权提升攻击等。

防御

  1. 最安全的方法是不接受来自不受信源的序列化对象,或使用只允许原始数据类型的序列化媒体
  2. 反序列化之前,先进行严格的数据类型校验。由于校验规则容易被攻击者探索出来,进而容易被绕过,因此防御不能仅依赖这一个手段,但可以作为完整性校验防御方案的补充
  3. 隔离运行那些在低特权环境中反序列化的代码
使用含有已知漏洞的组件

组件有应用程序相同的权限,如果应用程序中含有已知漏洞,攻击者可以使用欧东获取数据或接管服务器,同时,使用这些组件会破坏应用程序防御,造成各种攻击产生严重的后果。

防御

  1. 移除任何多余的功能、组件和文档
  2. 从光放渠道安全的获取组件(避免中间过程中认为的加入恶意组成部分),并使用签名机制来降低组件被篡改或加入恶意 漏洞的风险
  3. 关注最新的漏洞报告,及时为需要的组件进行升级或者打补丁
不足的日志记录和监控

不足的日志记录和监控,以及时间响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性的或攻击更多的系统,以及对数据的不当操作。

防御

  1. 确保所有登录、访问控制失败、输入验证能够被记录到日志中去,并保留足够的用户上下文信息,以识别可疑、恶意账户,并未后期取证预留足够时间。
  2. 建立有效的监控和警告机制,使可疑活动在可接受的时间内被发现和应对
  3. 完善日志系统,使其可以监控各种日志信息
  4. 及时对日志系统进行备份,并保存足够长时间
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值