zoukankan      html  css  js  c++  java
  • 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+ ***
  • 相关阅读:
    『题解』POJ1753 Flip Game
    『数论』乘法逆元
    『数据结构』RMQ问题
    UVA 253 Cube painting 【数学】
    POJ 1852 Ants 【水+Trick+贪心】
    POJ 2955 Brackets 【区间DP】
    LOJ 1422 Halloween Costumes【区间DP】
    HDU 4193 Non-negative Partial Sums 【单调队列】
    CodeForces-545C Woodcutters 【贪心+机智】
    CodeForces 19D A and B and Interesting Substrings 【前缀和】
  • 原文地址:https://www.cnblogs.com/wangzepu/p/9790634.html
Copyright © 2011-2022 走看看