Java相关|Code Review Checklist(Server)

安全
  1. 所有入参均经过校验,包括验证参数数据类型、范围、长度,尽可能采用白名单形式验证所有的输入。对于非法请求,记录WARN log。参考Input Validation Cheat Sheet;前后端统一校验标准,最好统一自动生成代码。
  2. 避免拼接客户端可控参数到SQL语句,采用预编译形式执行SQL,尽可能使用#{},特殊场景需使用${}时必须对参数做严格校验,比如限制类型、长度等。
  3. 对于服务端内部异常,统一返回Error Code和Error Message,避免返回Stacktrace等内部系统细节,参考统一异常处理&错误码规范使用说明
  4. 所有接口读写敏感数据前必须增加 session 鉴权,校验数据归属为当前登录账户。
  5. 敏感信息不要硬编码到代码中(比如密码等)。
  6. 非公开页面或资源,必须要求服务端身份验证。
  7. 符合Least Privilege原则,具备逻辑严密的权限配置。
  8. 重要数据变动皆有审计日志,日志中不要保存敏感信息(系统详细信息、会话session或密码等)。
  9. 所有上传文件类型必须要做白名单检查,且统一存储到OSS。
  10. 禁止在代码中留任何形式的后门
兼容性
  1. 所有的模块外部接口不存在兼容性问题;
  2. 如果有DB Migration,说明需在发布前或发布后执行,兼容平滑发布;
  3. 所有的DB Schema变动均已考虑对统计的影响;
  4. 数据的含义或处理逻辑有变更时,考虑对存量/在途数据的影响;
性能
  1. 相关DB查询有恰当的索引;
  2. 接口处理时间与数据库中既有数据量不存在相关性;
  3. 批量数据处理、定时任务、离线处理等重度DB和计算的任务,需与业务进程隔离,尽可能用只读数据源;
  4. 严格控制批量导入功能的开发;
  5. 对与高Hit Ratio的查询进行缓存处理。数据更新时,根据业务需求采用合适的缓存刷新策略;
  6. 全文搜索相关的使用ES进行支持;
  7. 没有WHERE的语句需要加上LIMIT;
质量
  1. 相当的可读性,可自解释,不可自解释的地方有相应的注释。外部接口有详细Java Doc,DB Schema有详细注释,并有相应的E-R图;
  2. 主要流程被Unit Test覆盖;
  3. 通过SonarLint检测没有严重Issue;
  4. DB业务关键字段加上NOT NULL Constraint;
标准
  1. HTTP Return Code
  2. 正常请求返回200
  3. 非法参数返回400
  4. 未登录或没有权限返回403
  5. 服务器内部错误返回500,并给出Error ID(Request ID),但隐藏Error细节
  6. Git Commit的Comment需带上禅道的Issue No,如: TASK-\d+ *** 或者BUG-\d+ ***

转载于:https://www.cnblogs.com/wangzepu/p/9790634.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值