一、基础设施的选择
- JDK、应用程序服务器(例如:Tomcat)尽量选择较新版本,减少漏洞隐患。
- ui 框架和 js 框架
- 依赖组件(.jar包)也尽量选择没有漏洞(vulnerability)的版本。例如:
- commons-fileupload 版本 ≥ 1.6.0
- shiro 版本 ≥ 1.13.0
- 。。
漏洞的发现是一个渐进的过程,所以要养成不断升级的习惯。
二、开发框架的选择
- 选择成熟稳定的框架 (Spring MVC 或 Spring Boot)
- 选择安全框架(如:Spring Security 或 Apache Shiro)
- 选择 ORM 框架(如:Hibernate、mybatis)
- 选择连接池(如:c3p0、HikariCP、dbcp)
- 选择加密算法库(建议:Bouncy Castle Provider)
- (前端)选择 js 框架(如:jQuery)
- (前端)选择 ui 框架(如:Vue.js、Bootstrap)
- (前端)选择加密库(如:crypto-js、sm-crypto)
三、开发套路或习惯
- 敏感信息不能明文传输,如:密码。
- hash 算法选择 SHA-256 或 SM3,而且记得加盐(Salt)。
- 账号密码必须要有一定复杂度,建议:>8位,数字、字母大小写(建议+符号)混合。
- 账号密码的匹配使用安全框架,而是不是用 Sql 语句查询。
- 所有的交互(表单和内部接口)都处于安全框架的会话保护。
- 对外接口添加 hash 验签。
- 所有数据库操作通过 ORM 框架进行,尽量减少原生 Sql 的拼凑。
ORM框架一般有属性映射和参数化查询,一定程度上会规避 Sql 注入。
【完】