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+ ***
  • 相关阅读:
    3、Linux 针对某一个特定用户、单一文件或者目录进行r,w,x的权限设置
    8、shell 打印实时时间日志
    35、shell 的日志不输出到终端
    34、Linux下几种文件传输命令 sz rz sftp scp
    33、umount: /storage: target is busy
    32、Device or resource busy故障处理
    30、终端不打印输出;判断命令是否执行成功;
    29、tar 命令压缩时报错 tar: Removing leading `/' from member names
    28、awk 截取字符串
    27、在脚本里面使用ssh 和 awk 时
  • 原文地址:https://www.cnblogs.com/wangzepu/p/9790634.html
Copyright © 2011-2022 走看看