前两天老板给了个活,大概需求就是商机之前是通过人工去导入的excel,现在写个接口,让客户给传商机数据进来,我们检验一下然后存起来,但是客户公司比较大(相对于我们公司。。),要求的比较严,所以老板的要求是要写的bigger高一点。
我的思路:
- 签名(安全性)
(用户唯一的标识码+时间戳+数据条数)的两次md5加密 - 错误代码配合文档(专业,而且数字不涉及编码问题)
根据不同的错误类型区分错误代码 - 异常处理(装(哔——))
所有本来能用if-else判断返回错误代码的地方统统用了抛出异常,说实话除了bigger高之外我并不知道优点是什么,而且异常处理会拖慢处理速度 - 用switch代替if-else(可读性)
这个的有点还是很明显的,很多的判断条件或成立之后都要抛出同一个异常,如果用if来写的话,条件语句会很长,可读性会很低,但是这个算是基本的吧。。也提升不了啥bigger - 日志记录每次请求的返回值(记日志总是没有错的)
记录下是数据是从哪个客户传过来的,
测试过程中出现的问题
- 无法在我这看到客户传过来的数据
- Oracle插入失败时tp报错,直接把插入失败错误页面返回给了访问者,安全性极差
解决办法:emmm,现在还没解决。。。只是规范了下他们的数据还有我们这的验证,如果真的还是出了这个错误估计还会给他们报错
- 接上,也就没有默认的异常处理,如果系统报错或者框架报错,根本搂不住,而且有个未知错误的错误码,却没有真正触发
老板的提议
- 签名计算方式不合理,不应该所有的东西都在json中,不然谁截取到之后直接就能破解
解决办法 :给每一个调用的客户分配一个md5(base64(code))加密之后的唯一加密串,拼接到之前的字符串中再加密
- 针对上面的问题1:必须能看到的,记日志吧,同一次的要能看出是同一次的,加个标识啥的
解决方法:本地记录的日志添加记录内容,从开始时候传入的json,到每一个数据非法但不至于返回错误码的错误细节,再到最后的返回码,然后标识没有加,而是在每次请求的开始的时候记录json之前加入了一行”===========”,结束返回错误码时在后面加了一行”===================”