Java相关|Code Review Checklist(Server)
安全 所有入参均经过校验,包括验证参数数据类型、范围、长度,尽可能采用 白名单 形式验证所有的输入。对于非法请求,记录WARN log。参考 Input Validation Cheat Sheet ;前后端统一校验标准,最好统一自动生成代码。 避免拼接客户端可控参数到SQL语句,采用预编译形式执行SQL,尽可能使用#{},特殊场景需使用${}时必须对参数做严格校验,比如限制类型、长度等。 对于服务端内部异常,统一返回Error Code和Error Message,避免返回Stacktrace等内部系统细节,参考 统一异常处理&错误码规范使用说明 。 所有接口读写敏感数据前必须增加 session 鉴权,校验数据归属为当前登录账户。 敏感信息不要硬编码到代码中(比如密码等)。 非公开页面或资源,必须要求服务端身份验证。 符合Least Privilege原则,具备逻辑严密的权限配置。 重要数据变动皆有审计日志,日志中不要保存敏感信息(系统详细信息、会话session或密码等)。 所有上传文件类型必须要做白名单检查,且统一存储到OSS。 禁止在代码中留任何形式的后门 兼容性 所有的模块外部接口不存在兼容性问题; 如果有DB Migration,说明需在发布前或发布后执行,兼容平滑发布; 所有的DB Schema变动均已考虑对统计的影响; 数据的含义或处理逻辑有变更时,考虑对存量