训练营第十一周作业 2
作业二:
根据当周学习情况,完成一篇学习总结
安全
攻击
XSS
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
百度百科:XSS攻击
案例
原理
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。 ---- 来自百度百科
防御手段
常用的手段有“消毒”,对HTML中危险字符进行转义,例如:‘<’转义成‘<’。
SQL注入
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
百度百科:SQL注入
案例
username = Frank’;drop table users; – ,通过SQL解释器将查询语句分为三个sql语句,实现删除表的目的。
黑客获取表名的手段有:知道该系统使用了指定开源框架(通过开源代码知道表名);错误提示(有些错误提示过于详细暴露了表名);盲猜。
原理
SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。简单的说就是在post/getweb表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击。假设某网站页面显示时URL为http://www.example.com?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。另外,在网站开发过程中,开发人员使用动态字符串构造SQL语句,用来创建所需的应用,这种情况下SQL语句在程序的执行过程中被动态的构造使用,可以根据不同的条件产生不同的SQL语句,比如需要根据不同的要求来查询数据库中的字段。这样的开发过程其实为SQL注入攻击留下了很多的可乘之机。
防御手段
使用预编译方式,参考:《架构师训练营》-第八周-网络与数据库
和防御XSS攻击一样,使用“消毒”方式。
CSRF攻击
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
百度百科:CSRF攻击
案例
假如一家银行用以运行转账操作的URL地址如下:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName,那么,一个恶意攻击者可以在另一个网站上放置如下代码:
<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman"
如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。
原理
欺骗用户浏览器,伪造用户请求的操作。
防御手段
Token:每次请求都携带一个Token值,服务器通过该Token值判断是否合法
验证码:简单有效,但是用户体验不好。必要时使用
referer:referer记录来源,可以通过来源检查合法性,不过不一定有值
其它攻击
Error Code
HTML注释
文件上传
路径遍历
防御手段
web应用防火墙ModSecurity
网站安全漏洞扫描
加密技术
单向散列加密
适合用于不需要解密的操作,例如用户的密码判断
对称加密
适用于需要知道原始值的场景
非对称加密
密钥管理系统设计
应用服务器不应该知道密钥,密钥也不应该存放在一个地方,而是应该将密钥分成多份,分别存放在不同地方。
风控
贝叶斯分类算法
布隆过滤器
规则引擎
机器学习
高可用
可用性指标
故障分管理
例如:事故级故障,耗时60分钟处理好,那么故障分就是100*60=6000分,再将故障分分配给不同的归属人。
故障处理流程以及考核
高可用架构
解耦
隔离
异步
备份
失效转移
幂等
事务补偿
重试
熔断
限流
计数器算法-固定窗口
计数器算法-滑动窗口
令牌桶算法
漏桶算法
自适应限流
降级
异地多活
高可用运维
发布
自动化测试
自动化部署
预发布验证
代码版本控制
自动化发布
灰度发布
网站运行监控
监控数据采集
用户行为日志采集
服务器性能监控
业务运行数据报告
监控管理
监控系统架构
高可用的价值观
评论