前言
本文小结一下我做Web项目设计和开发以来,所用到的提升系统安全性的策略和方法。
一、网络、传输
1、IP白名单,IP黑名单
2、用Https代替Http,相关内容可参考我的这篇文章
3、更安全的数据摆渡方式(比如:用光盘刻录和摆渡涉密数据)
二、前端、后端
1、Token校验用户身份
比如:在.Net Core里使用JWTToken
/// <summary>
/// 首页列表接口
/// </summary>
/// <returns></returns>
[Authorize(Policy = "AllUser")]
[HttpGet, Route("GetFirstPageList"), ProducesResponseType(typeof(FirstPageResult), 200)]
public Task<IActionResult> GetFirstPageList()
{
string token = HttpContext.Request.Headers["Authorization"];
return ExecuteGetAsync(() =>
{
return Ok(_achievementService.GetFirstPageList(token));
});
}
2、USBKey登陆(类似于银行的U盾)
3、验证码–图形验证码、滑块验证等
4、前端反爬虫
5、后端Web API安全策略(比如:限制单用户单日的访问次数、限制单用户单日访问数据的总量)
6、记录操作日志
7、贯穿在系统设计和系统开发全流程中的数据加密、解密策略(该策略和下面提到的数据库层面的“透明加密策略”的核心都是对数据进行加密)
三、数据库、运维
1、保证服务器磁盘上的数据库源文件是已经经过加密的
数据库源文件为什么需要加密:我们的项目一直使用的是SQL Server,在某些场景下,数据源文件存在被直接从服务器磁盘上拷贝走的风险,而且数据库源文件是明文加密的,很容易被还原
对数据库源文件加密的具体方法:方法一:SQL Server自带的透明加密策略、方法二:透明加密中间件、方法三:某些第三方数据加密软件(比如:亿赛通)等
2、保证磁盘上的缓存数据等中间数据是已经加过密的(原理同上一条)
3、代码混淆,防止代码反编译
4、代码中或者文件中的敏感数据(数据库连接字符串、第三方应用的账号和密码等)加密
5、数据库安全技术
数据库安全技术主要包括:数据库漏洞扫描、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统等。