常见的高可用/并发场景带来挑战
问题:高可用和架构安全的关系
常见的架构安全问题
SQL注入
SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。
带内注入
常见的tsql拼接或UNION ALL 推理SQL注入:非为了显示数据,根据用户行为线索,尝试SQLi攻击途径 带外注入/二阶注入:注入SQL语句,结合用户的行为习惯,进行数据库针对性攻击
csrf(跨站请求伪造)攻击
CSRF(Cross-site request forgery):跨站请求伪造。利用用户对网站的信任
方法一: Token 验证:(1)服务器发送给客户端一个token;(2)客户端提交的表单中带着这个token。(3)如果这个 token 不合法,那么服务器拒绝这个请求。
方法二:隐藏令牌:把 token 隐藏在 http 的 head头中。 方法三: Referer 验证:Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。
xss(跨站脚本)攻击
不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)
盗用Cookie破坏页面的正常结构,插入广告等恶意内容D-doss攻击
是向网站 注入 JS代码,然后执行 JS 里的代码,达到篡改网站的内容目的,eg: XSS盗取Cooike
文件上传漏洞防御
大致思路:
①文件上传的目录设置为不可执行
②判断文件类型
③使用随机数改写文件名和文件路径
④单独设置文件服务器的域名
⑥在客户端和服务器端对用户上传的文件名和文件路径等项目进行双重验证
⑦服务器端添加白名单过滤
⑧对%00截断符进行检测 ⑨对HTTP包头的content-type也和上传文件的大小进行检查
路径遍历攻击防御
最有效的办法就是权限控制,谨慎处理传向文件系统API的参数,净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝
什么是架构安全
通常情况下,在企业网络边界内,用户已经可以不受控制地访问企业网络。当离开企业网络边界,他们插入一个虚拟专用网络(VPN),这就和处于企业网络内几乎是相同的。但是在后一种情况下,他们可能会从不安全的位置或设备连入网络
架构安全包括那些内容
一:权限控制
1)将用户分权限,不同权限的用户具有不同的功能,不可以进行跨权限进行非正常操作。
2)将不可被直接访问的页面隐藏,使其只能通过页面内部跳转进行访问。
3)实现:
对于1)可以使用安全性框架进行权限管理,例如:shiro、spring security等。
对于2)可以将需要隐藏的页面放在sln中的静态资源下等。
二:信息加密以及密匙管理
1)用户的一些敏感信息,比如用户的登陆密码等,在数据库中不可以用明文存储,需要进行加密存储。这样即使玩意被黑客入侵,得到的数据也是加密后的数据,不会造成大的损失。
2)信息的加密和解密与密匙密不可分,那么密匙的安全管理也极为重要。信息的安全是靠密匙保证的。
3)实现:
对于1)的实现,可以使用单向散列加密、对称加密、非对称加密其中一个算法进行加密后存储在数据库中。
对于2)的实现,在1)中使用的加密算法,都需要依靠安全的密匙才可以进行安全的加密。一种方案是把密匙和算法放在一个独立的服务器上,甚至做成一个专门的硬件设施,但是成本较高,系统开销也大.另一种方案是将加解密算法放在应用系统中,密匙则放在独立服务器中,为了提高安全性,可以将密匙分片存储。
三:设置登录和服务器访问日志
1)设置日志,记录来访者的 IP ,传递参数,对后台操作用户建立日志,记录其操作内容。完善的日志记录可以帮助你发现潜在的危险,找到已经发生的问题。
四:具体安全问题防护
1)sql注入,XSS攻击,CSRF攻击,文件上传漏洞,弱口令漏洞,自定义抛出异常信息,后退键缓存信息泄漏,注释漏洞等。
2)实现:架构中安全性系列笔记
五:设置web应用防火墙
1)使用一款能够统一拦截请求,过滤恶意参数,自动消毒(转换恶意字符),自动添加token,并且能根据最新攻击和漏洞自动升级,处理掉大部分的网络攻击的产品 ——ModSecurity
2)NodSecurity,一款开源的Web应用防火墙。 可在项目中使用
六:网站安全漏洞测试
1)当我们将项目的安全性设置完毕后,要进行安全测试。
2)网站安全漏洞扫描:使用扫描工具,对网站模拟各种黑客攻击手段,检测网站安全性。 市场上有许多安全扫描平台。
3)已知安全漏洞测试
安全架构梳理
架构安全—实现架构
详细理解这个架构,那么从监控的角度来说,5大层面都需要监控到位,每层的日志、行为分析都要掌控到,并且联动告警,这里可以是MQ,可以是短信可以是邮件等等
架构安全—用户安全域
架构安全—架构隔离
分层隔离,架构安全的基础,服务器架构安全的万精油 服务器隔离,服务器网段隔离,端口隔离,IP隔离等
架构安全—数据传输
常用的数据安全算法:
1.数字摘要,也称消息摘要。
2.对称加密算法。
3.AES算法。
4.非对称加密算法。
5.数字签名。
6.数字证书。摘要认证,签名认证,HTTPS协议
目的:保障数据安全传输。识别“敌我”
Eg:WCF,http+SSL证书
架构安全—代码优化
目的:保障数据安全传输。识别“敌我”。 https://www.cnblogs.com/moveofgod/p/12688617.html
架构安全—数据存储
(1) 系统的安全设置及管理, 包括法律法规、政策制度、 实体安全等;
(2) 数据库的访问控制和权限管理;
(3) 用户的资源限制, 包括访问、使用、存取、 维护与管理等;
(4) 系统运行安全及用户 可执行的系统操作;
(5) 数据库审计有效性; (6) 用户对象可用的磁盘空间及数量。
架构安全—防火墙
服务器架构:
办公区需要连接VPN登录堡垒机去访问可用性架构中的服务器; 可用性架构中的每台服务器都安装HIDS和防病毒软件, 旁路的漏扫集群随时对服务器进行漏洞扫描,数据库审计来审计数据库操作日志, 同时所有服务器日志与应用日志均反馈给日志分析集群, 公网访问通过抗DDoS设备和加密机访问到服务器 https://www.aliyun.com/product/yundunall?spm=5176.10695662.746864.1.efc54875HWW0cT
构安全—监控预警
云监控:https://help.aliyun.com/document_detail/28581.html?spm=a2c4g.11186623.6.544.668bf6fcPzSdAW
架构安全的坑—过度设计
小公司里的大公司病 小公司里的大公司病在互联网洪潮的冲刷下,巨头IT公司积累的经验是普通公司不可比拟的,随之而来的是,互联网公司都喜欢遍地招这些巨头的员工,因为他们希望借助这些科技人才帮助公司茁壮成长,并且也能更好的进行融资和招揽人才。这些人才中,很大一部分是经过层层筛选出来的精英人才,他们掌握了良好的基础,拥有丰富的架构设计理论和实践。但是有一小部分是进去为了镀了一层金出来谋求更好的发展,或者靠实力进去后吃老本几年混不下去出来的人,他们精通各种话术(专业术语),信手拈来的成熟架构体系,大公司的资源丰富,于是养成了对服务器资源无节制使用,美其名曰背靠大山,不怕坐吃山空。常挂嘴边的口头禅:我们xx公司原来也是这么设计的
反观上面的案例,都是不遵循架构的发展规律。架构是迭代设计出来的,没有通吃的标准架构,也没法一步到位,我们要因地制宜,层层递进,不断优化,最后才是适合自己的架构。尤其对于中小型公司来说,还没发展成型的项目始终存在着变动,我们应该设计应该是可扩展、易管理、易升级的架构,拥抱变化的同时不断优化,才不会因为笨重的包袱妨碍了奔跑的速度。
安全架构总结