- 梭哈式的拷贝代码
问题:看到很多代码都没有使用到,但是拷贝工程的时候把所以的都拷贝了,然后稍微修改下,不管有用没有。 这样子的代码冗余太多,后期可读性差。
反例:还有很多,就不一一列举了。
- mybatis 能用#就别用$
建议能用#就别用$ #会比较大程度的防止sql注入
-
System.out.println 打印日志
以后程序里面不要用System.out.println 这种来打印信息,如果都用这个来打印会照成性能低下,程序阻塞。
-
工具类什么的正常就不要写main()方法,建议写测试类
-
mybatis mapper.xml不建议写超长sql
- 可读性差
- 还包含复杂运算,严重影响性能。
可以采用Java来做运算处理,不是很建议占用数据库资源。
密钥管理:硬编码加密密钥问题
危害: 密钥硬编码在代码中导致的直接结果就是代码在哪里,密钥就在哪里。研发人员电脑上存在密钥,如果电脑被攻击则密钥也会被泄漏。其次研发人员会因为没有安全意识,将代码上传至各类私有云盘或家里电脑又或是U盘中,导致风险面增大。更有甚者,将代码上传至GitHub,而忽略了代码中的硬编码密钥,从而被恶意着利用
案例:比如这次代码检验,我们就把对应密钥信息给暴露给检测商了。厂商可以直接使用该密钥。
解决方案:核心点在于密钥需要和代码分离,尽可能少的让密钥被人接触到
- 环境变量/配置文件
- 通过配置管理中心来管理配置
- 弱加密问题
问题: 使用 DES 算法生成的密钥短,仅有56位,运算速度较慢,而且DES算法完全依赖密钥,易受穷举搜索法攻击
解决办法: AES算法替代DES算法,AES最少可生成128位,最高256位的密钥,且运算速度快,占用内存低。