做电商系统开发,写功能需求文档时,大家往往盯着购物车、支付流程、订单状态这些显眼的功能点,却容易忽略背后的安全隐患。其实在电脑安全的角度看,一份合格的电商功能需求文档,必须把安全控制写进每一个环节。
用户登录不能只写‘支持手机号登录’
很多文档里写着‘用户可通过手机号或邮箱登录’就完事了,但没提验证码频率限制、密码错误次数锁定、防暴力破解机制。这就埋下了风险。比如,攻击者可以用工具不断尝试常见密码组合,如果没有登录失败次数限制,账号很容易被撞库攻破。需求文档里应该明确:连续5次密码错误后锁定账户15分钟,且验证码每60秒才能重发一次。
支付流程要定义数据加密方式
写到‘用户可使用微信、支付宝付款’时,不能一笔带过。得说明交易数据是否全程HTTPS传输,敏感信息如卡号、CVV是否在前端做过脱敏处理。比如,在填写银行卡页面,需求应注明‘所有输入字段通过前端JS加密后再提交,防止中间人窃取明文’。
<input type="password" id="card-cvv" autocomplete="off">
<script>
document.getElementById('card-cvv').addEventListener('blur', function() {
this.value = encrypt(this.value); // 提交前加密
});
</script>
订单导出功能可能成为数据泄露口
运营人员常需要导出订单做对账,但‘支持CSV导出’这种描述太粗糙。如果不对导出权限做细分,普通客服也能一键下载全部用户电话和地址,一旦账号被盗,整个用户库就外泄了。应在需求中写明:导出订单需二级审批,且仅限本部门负责人角色可操作。
还有些开发者图省事,把数据库查询语句直接写在接口里,像‘SELECT * FROM orders WHERE date = XXX’,这容易被SQL注入。需求文档虽不写代码,但可以要求‘所有查询接口必须使用参数化查询,禁止拼接SQL’。
后台管理要设操作日志
管理员删商品、改价格是常规操作,但如果没留痕,出了问题根本查不到谁干的。需求里得加上:所有敏感操作必须记录操作人、IP、时间、变更前后值,并保留至少180天。这样万一内部有人恶意篡改,也有据可查。
别觉得这些是开发该想的事。需求文档是源头,安全问题从第一行字就得考虑。不然系统上线后再补,成本高还容易漏。