网络安全及系统安全架构设计
Author:Jessie Yang
Date: 2020/8/26
引言
架构师有不同角色,而安全是一个非常专业和重要的领域。专门的安全架构师负责对系统持续的安全风险的检测、分析、加固方案、提前预警。本文对系统常见的安全架构的设计做简单的小结
安全攻击
XSS攻击
跨站点脚本攻击:攻击者在请求中包含恶意的脚本,发给服务器,服务器执行恶意脚本受到攻击。

【方法】用户不能发脚本文件服务器。禁止用户提交脚本(将脚本括号<>消毒去掉)
SQL注入

攻击者在请求中包含恶意(如drop table)的SQL命令,导致数据库直接执行恶意SQL。
【方法】不让用户提交SQL。使用SQL预编译,使得SQL被当作SQL入参,而非SQL命令;利用正则表达式过滤等方法防止SQL注入。
CSRF攻击
绕过用户请求,伪造用户请求发送到服务器。

【方法】页面请求访问包含token参数或验证码校验,防止被攻击、爬虫或机器模拟访问。
还有:文件上传、路径遍历等安全漏洞攻击。
应用网关
解决方案:
利用网关: 统一在网关中设置filter(如:正则表达式、Token、验证码)统一进行攻击的拦截过滤,做好安全防护。
开源的工具:ModSecurity,Web应用防火墙,可以嵌入到Web应用服务器中或独立的应用启动。
信息加密意识
安全的重要性不言而喻,而架构师及软件工程师在系统设计中要有基本的安全防范的意识。
· 虽然任何系统都不可避免可能会有信息泄漏,但也要保障信息不能完整被泄漏。保证日志、数据库中信息,有策略保护,及时泄漏,重要信息也不能被完整获取。
加密方法
加密的方法很多。尤其基本的认知,数据库中不能存储密码的明文。
1. 单项散列算法:比如利用MD5做密码加密。单向加密后不能反向得到原始密码。利用加密算法进行加密后字符串比较。这里要注意:
防止有人拿密码明文、密文做映射表,需要在算法中加点“盐”,可以用用户名等参数一起作为被加密的一部分,方式简单被猜出对应的明文。


2. 对称加密

3. 非对称加密

加密和解密的密钥不一样。
公钥加密;私钥解密,拥有私钥的服务器进行解密。
加密是私钥;解密是公钥—— 区块链、电子签名
密码安全管理和加解密服务器架构
将密码的加解密、密钥的服务、存储分开,不同权限的人员管理。

反垃圾邮件
处理流程

人工打标签-》分类模型-》算法识别

贝叶斯算法
标注的特征、分类,进行概率计算

大致流程:
1. 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
2. 提取邮件主题和邮件体中的独立字符串,例如 ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
3. 每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。
4. 计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)。
5. 综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为:
A 事件 ---- 邮件为垃圾邮件;
t1,t2 …….tn 代表 TOKEN 串
则 P ( A|ti )表示在邮件中出现 TOKEN 串 ti 时,该邮件为垃圾邮件的概率。
设
P1 ( ti ) = ( ti 在 hashtable_good 中的值)
P2 ( ti ) = ( ti 在 hashtable_ bad 中的值)
则 P ( A|ti ) =P2 ( ti ) /[ ( P1 ( ti ) +P2 ( ti ) ] ;
6. 建立新的哈希表hashtable_probability存储TOKEN串ti到P(A|ti)的映射。
7. 至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表 hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。
处理上亿垃圾邮箱的存储技巧——布隆过滤黑名单

内存空间中开辟一个空间,如连续地址的空间16G*8的比特位,全部初始化为0.
每个垃圾邮箱地址加密后存为8个比特位。
布隆过滤器用于记录大数据Key。
金融风险控制
规则引擎:对高风险的规则进行判断。

机器学习的方法:

版权声明: 本文为 InfoQ 作者【架构5班杨娟Jessie】的原创文章。
原文链接:【http://xie.infoq.cn/article/ae118fe13823288786b5f04e9】。文章转载请联系作者。
评论