JAVA的编码安全注意事项及一些安全问题规避措施

编码安全问题规避

1.参数要做校验:

  • 验证所有的从不信任的数据源来的输入,默认其为不安全的数据,不仅要验证类型,也要验证参数长度值范围
  • 尽量使用白名单不使用黑名单
  • 所有客户端验过得参数,在服务器端要在验一遍

2.禁止日志及异常中打印敏感信息

  • 要注意日志信息info、wran、error级别的控制,禁止打印明文密码、身份证号等证件号码、系统敏感信息、姓名、电话号码等

3.用完的临时文件要及时删除

  • 例如:临时上传的测试文件等

4.用完的调试代码要及时删除

  • 例如:代码调试时的main方法、为方便查看日志时加的多余的日志打印、业务代码中加的UT

5.禁止使用弱加密算法

参考:

加密算法的安全级别(Security Level of Cryptographic Algorithms)

安全级别 
(Security Level)

工作因素 
(Work Factor)

算法 
(Algorithms)

薄弱(Weak)

O(240)

DESMD5

传统(Legacy)

O(264)

RC4SHA-1

基准(Baseline)

O(280)

3DES

标准(Standard)

O(2128)

AES-128SHA-256

较高(High)

O(2192)

AES-192SHA-384

超高(Ultra)

O(2256)

AES-256SHA-512

6.防止注入攻击

  • 例如XML攻击、SQL注入攻击等

7.禁止代码中存在硬编码

  • 例如将URL直接写在业务代码里,应该学会定义成员变量,常用的数据可以定义到Common类中,整个包都可以引用

8.使用强的随机数字生成器

  • 例如不适用Random生成伪随机数,可以SecurityRandom等,或改用UUID,时间戳等

9.对于传输的敏感数据,做到先签名,再加密
10.充分的异常管理

  • 异常抛出时做到准确、精细、可控,防止接口处异常吞掉业务深处的异常信息。

11.代码简单易读,可以有效的解决问题。

  • 尽量做到clean code的标准(《代码简洁之道》《阿里巴巴编码规范》这一类的编码规范类书籍可以借鉴一下)

12.注意编译器警告。

  • 编译时,用最高的告警级别,并且清除所有的警告。
  • 使用好的编程习惯避免这些错误的发生。
  • 用工具辅助贯彻落实编码(CheckStyle、FindBug、CodeDEX、PMD等)

13.坚持最小权限原则。
14.使用有效的质量保证技术。

  • 单元测试、测试覆盖率
  • 异常数据测试、Fuzz测试
  • 自动化代码扫描工具、自动化漏洞扫描工具
  • 人工代码审查
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值