类编程的WAF(上)

一、复杂的需求

WAF (WEB 应用防火墙) 用来保护 WEB 应用免受来自应用层的攻击。作为防护对象的 WEB 应用,其功能和运行环境往往是复杂且千差万别的,这导致即便防御某个特定的攻击方式时,用户需求也可能是细致而多样的。

以最基本的 SQL 注入 (以下简称注入) 为例。注入攻击当然是要防范的,但用户可能还有以下需求:

  • 某个域名或某些特定的 URL 不需要注入检查
  • 对来自外网的注入访问进行拦截,来自内网的注入访问只记录不拦截
  • 对特定的请求参数名或特定特征的请求参数不进行注入检查
  • 非工作时段不仅拦截还阻止该用户一段时间访问
  • 对 admin 等管理账号登录后的访问不进行注入检查
  • 对于只记录不拦截的请求,附加一个特别的请求头发往应用
  • 对某些 URL 的注入访问记录下 HTTP 请求的全部报文
  • 将 HTTP 响应码为 500 的注入的日志紧急度设为 alert

以上需求,用户可能只提出一项,也可能提出多项,还可能是不同的逻辑组合或更多的条件和动作。这还仅仅是防注入这项基本功能,如果有更多的应用防护需求,比如:

一个已登录的非内网用户在 10 秒钟连续访问 POST 方法的页面 (非 AJAX 数据) 达到 5 次,则在 10 秒内延迟这个用户的响应时间 0.5 秒;如果在未来 10 秒内继续访问 POST 方法页面 3 次,则强制用户登出并阻止登录 30 秒;如果一个用户 1 天内这种情形发生 5 次,则产生一条严重级别的告警。

我们该如何描述满足这些需求的功能呢?

WAF是否能够设计得足够灵活,使得实施人员通过现场配置就能实现这个需求?


二、规则的局限性

大部分应用防火墙的配置以规则为核心。

传统意义上的规则,其实质形式是独立的一行行文本,每行文本有固定的结构/字段,可以独立地描述出一个功能。对用户而言,书写规则就是设置其中的参数和选项。这种规则的好处是简单明了,用户甚至可以在图形化界面中完成规则的配置,但其弱点是不足以描述复杂的情形。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值