娱乐

web平台代码安全审计任务工作页

时间:2010-12-5 17:23:32  作者:探索   来源:娱乐  查看:  评论:0
内容摘要:web平台代码安全审计任务工作页 凌晨两点,日志系统突然报警。攻击者利用一个未过滤的`$_GET`参数,在商品搜索框里塞进了整条SQL查询语句。数据库里三十万条用户记录差点被拖走。这活儿不难防,只要代

web平台代码安全审计任务工作页

凌晨两点,台代日志系统突然报警。码安攻击者利用一个未过滤的全审`$_GET`参数,在商品搜索框里塞进了整条SQL查询语句。计任数据库里三十万条用户记录差点被拖走。作页这活儿不难防,台代只要代码审计时多看一眼那条拼接字符串的码安查询。

代码审计不是全审拿着扫描器跑一遍就完事。工具能揪出已知漏洞,计任但业务逻辑里的作页坑,得靠人眼一行行过。台代我见过最典型的码安案例:某后台管理系统,开发者用`md5($_POST['password'])`做校验,全审看着没问题,计任可登录接口没做频率限制,作页攻击者拿彩虹表硬跑,两小时就把管理员密码撞出来了。审计时得问自己——这个校验能不能绕过?这个接口能不能被批量调用?

任务清单第一项:输入验证。所有从客户端来的数据,包括`$_GET`、`$_POST`、`$_COOKIE`、`$_FILES`,甚至HTTP头里的`User-Agent`,都当恶意数据对待。检查过滤函数是否完备,正则是否可被绕过。比如`preg_match('/^[a-z0-9]+$/i', $input)`看着安全,但要是后面跟了`strtolower()`再拼接,某些编码转换漏洞就能钻空子。

第二项:认证与会话管理。别光看登录逻辑,要看会话ID的生成算法。用`rand()`还是`uniqid()`?后者基于时间戳,可预测。审计时拿两个不同时间点的session值对比,如果差异仅在前几位,基本能确定生成规则有问题。还有会话固定攻击——登录前和后是否更换session_id?不换的话,攻击者可以提前把session_id发给受害者,等对方登录后直接接管。

第三项:访问控制。这地方最隐蔽。水平越权和垂直越权都发生在业务层。有个真实案例:电商平台用户能通过修改订单详情接口中的`user_id`字段,查看他人收货地址。审计时得追踪每个数据对象的归属校验,不能只依赖前端隐藏按钮。写个脚本遍历不同角色调接口,看响应码和数据结构差异,比肉眼排查高效。

第四项:输出编码。XSS漏洞的根源就是输出没转义。但审计时要注意上下文——同样一段HTML实体编码,在`