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变动均已考虑对统计的影响;
- 数据的含义或处理逻辑有变更时,考虑对存量/在途数据的影响;
性能
- 相关DB查询有恰当的索引;
- 接口处理时间与数据库中既有数据量不存在相关性;
- 批量数据处理、定时任务、离线处理等重度DB和计算的任务,需与业务进程隔离,尽可能用只读数据源;
- 严格控制批量导入功能的开发;
- 对与高Hit Ratio的查询进行缓存处理。数据更新时,根据业务需求采用合适的缓存刷新策略;
- 全文搜索相关的使用ES进行支持;
- 没有WHERE的语句需要加上LIMIT;
质量
- 相当的可读性,可自解释,不可自解释的地方有相应的注释。外部接口有详细Java Doc,DB Schema有详细注释,并有相应的E-R图;
- 主要流程被Unit Test覆盖;
- 通过SonarLint检测没有严重Issue;
- DB业务关键字段加上NOT NULL Constraint;
标准
- HTTP Return Code
- 正常请求返回200
- 非法参数返回400
- 未登录或没有权限返回403
- 服务器内部错误返回500,并给出Error ID(Request ID),但隐藏Error细节
- Git Commit的Comment需带上禅道的Issue No,如: TASK-\d+ *** 或者BUG-\d+ ***
Java相关|Code Review Checklist(Server)的更多相关文章
- Code Review Checklist
左按:当年需要一份详细的代码评审清单作参考,翻译了此文. 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] General Code Smoke Test 通用测试 Comm ...
- Code Review Checklist and Guidelines for C# Developers
Checklist1. Make sure that there shouldn't be any project warnings.2. It will be much better if Code ...
- IDEA工具java开发之 常用插件 git插件 追加提交 Code Review==代码评审插件 撤销提交 撤销提交 关联远程仓库 设置git 本地操作
◆git 插件 请先安装git for windows ,git客户端工具 平时开发中,git的使用都是用可视化界面,git命令需要不时复习,以备不时之需 1.环境准备 (1)设置git (2)本地操 ...
- Code Review Engine Learning
相关学习资料 https://www.owasp.org/index.php/Code_review https://www.owasp.org/images/8/8e/OWASP_Code_Revi ...
- 基于GitLab的Code Review教程
一.前言 1.本文主要内容 GitLab Code Review机制说明 Git Workflow 与 Git Code Review Workflow GitLab Code Review 配置说明 ...
- Code review应该怎么做
代码评审有两种不同的方法,一种是代码走查,一种是代码审查,我们这里讨论的仅指代码走查.通常自己写的代码都难以发现问题,需要以第二双眼睛再次检查代码,帮助我们及时地发现潜在的问题. 做代码审查之前,团队 ...
- 关于Gerrit code review 介绍与安装
代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...
- 如何搭建开源code review gerrit服务器
搭建环境:Ubuntu 14.04 一.环境准备 1.Java环境 gerrit依赖,用于安装gerrit环境. 下载:jdk-7u79-linux-x64.tar.gz http://www.ora ...
- Code Review Tools
Code Review中文应该译作“代码审查”或是“代码评审”,这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻 ...
随机推荐
- Maven(一)Maven 的概念和安装
Maven 的概念和安装 Maven 是什么 首先 Maven 肯定是一个造福人类的好东西,它可以省去我们构建项目中引入 jar 包时的麻烦,还有利于项目的模块化开发等等等好处.在如今项目中大体都是使 ...
- JavaScript剩余操作符Rest Operator
本文适合JavaScript初学者阅读 剩余操作符 之前这篇文章JavaScript展开操作符(Spread operator)介绍讲解过展开操作符.剩余操作符和展开操作符的表示方式一样,都是三个点 ...
- RabbitMQ(一):RabbitMQ快速入门
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章. RabbitMQ ...
- 使用java语言基于SMTP协议手写邮件客户端
使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...
- CSS画出三角形(利用Border)
画出三角形的原理是调整border(边框)的四个方向的宽度,线条样式以及颜色. 如果你将宽度调的足够大,改变不同方向的颜色,你就可以发现盒模型的border是四个梯形一样的线条. div{ width ...
- 小白开学Asp.Net Core《三》
小白开学Asp.Net Core<三> ——界面 我胡汉三再次又回来了(距离上篇时间有点长),今天抽时间将最近对框架采用的后台界面做个记录 1.先上图 (图一) (图二) 2.界面说明 后 ...
- Kafka学习(三)-------- Kafka核心之Cosumer
了解了什么是kafka( https://www.cnblogs.com/tree1123/p/11226880.html)以后 学习核心api之消费者,kafka的消费者经过几次版本变化,特别容易混 ...
- C#的DateTime得到特定日期
//指定时间 DateTime dt = new DateTime(2016, 6, 1); //当前时间 DateTime dt = DateTime.Now; //本周周一 DateTime st ...
- golang "[]uint8" to string
关于Uinit8和Byte: The Go Programming Language Specification Numeric types uint8 the set of all unsigned ...
- TestNG中DataProvider的用法二:简单的数据驱动
@DataProvider标记的方法除了可以返回数组外,还可以返回一个Iterator,这样的好处是不用把所有的测试数据都加载到内存中,而是需要的时候就读一条. 下面的例子就使用了Iterator,然 ...