- 一、安全问题的本质是信任问题。
- 二、安全三要素(CIA)
- 三、白帽子安全兵法
- 四、跨站脚本攻击(XSS:cross site script)
- 五、跨站点请求伪造(CSRF:cross site request forgery)
- 六、SQL注入
- 七、拒绝服务攻击(DDOS:Distributed Denial of Service)
- 总结
一、安全问题的本质是信任问题。
互联网安全的核心是数据安全,数据从高等级的信任域流向低等级的信任域,是不需要安全检查的;数据从低等级的信任域流向高等级的信任域,则需要经过信任边界的安全检查。
二、安全三要素(CIA)
机密性:保护数据内容不泄露。加密是实现机密性要求的常见手段。
完整性:保护数据内容是完整、没有被篡改的。常见的保证一致性的技术手段是数字签名
可用性:保护资源是“随需而得”。
CIA的要求在登陆验证的需求下表现的淋漓尽致。使用SSL加密传输保证数据的机密性,使用数字签名保证数据未被篡改,使用其他手段保证不被Dos攻击。
三、白帽子安全兵法
####1、最小权限原则
系统只授予主体必要的权限,而不要过度授权。
Ps: 最直接的体现每种类型的后台App一个独立的账号,数据库、Web app、Daemon app使用独立账号管理,只授予必要权限,限定目录读写等权限。
2、纵深防御原则:
首先,要在各个不同的层面,不同的方面实施安全方案,避免出现疏漏,不同安全方案之间相互配合,构成一个整体。
其次,在正确的地方做正确的事,即:在解决根本问题的地方实施针对性的安全方案。
如无论Web app、Deamon app都需要互不信任、进行防御,构成纵深;然后针对自身的服务针对性的设计安全方案,如Web app主要针对Web安全,后台服务主要防止数据注入。
3、数据与代码分离
例如:
<html>
<head></head>
<body>
$var
</body>
</html>
对于这段代码:
<html>
<head></head>
<body>
</body>
</html>
就是程序的代码段,而
$var
就是用户数据。当$var的值是:
<script src="http://evil"></script>
此时就会出现安全问题。此时如何处理,根据代码分离的原则,重写程序片段并对$var进行安全处理
<html>
<head></head>
<body>
<script>
$var
</script>
</body>
</html>
此时,script还原为代码片段,用户数据只有$var,就可以做安全处理了。
####4、不可预测性
不可预测性能后效的对抗基于篡改、伪造的攻击。例如,一个内容管理系统,如果文章的序号是按照数字升序排列,那么如果攻击者如果想批量删除这些文章,只需要简单的一个脚本:
for (i=0; i<1000; i++) {
delete(url+"?id="+i);
}
四、跨站脚本攻击(XSS:cross site script)
本质:用户数据被当成了HTML代码的一部分执行,从而混淆了原本的语义,产生新的语义
XSS根据效果可以划分为一下几类:
1、反射型\存储型XSS
原理:从服务器应用直接输出到HTML页面中以进行攻击的XSS漏洞
防御:
输入检查:根据数据的特征进行简单的XSS过滤
输出检查:根据输出的场景进行XSS防御,根据场景的不同选择合适的encode函数。常见的场景包括:HTML标签、HTML属性、script标签、CSS、地址栏、Http Response头。
2、DOM Based XSS
原理:通过Javascript修改HTML页面的DOM节点时形成的XSS漏洞
防御:在数据输入到Javascript中应该执行一次javascriptEncode,然后同上。即,从Javascript输出到HTML页面也相当于一次XSS输出的过程,需要分场景使用不同的encode函数。
五、跨站点请求伪造(CSRF:cross site request forgery)
本质:重要操作的所有参数都可以被攻击者猜测到的。攻击者只有预测出URL的所有参数和参数值,才能成功地构造一个伪造的参数;反之,攻击者将无法攻击成功
防御:anti CSRF Token,保持原参数不变,新增一个参数token,该参数的值是随机的。通过添加此参数,促使攻击者无法预测所有参数值以预防CSRF。
不可预测性
CSRF与XSRF不同,解决后者的唯一办法首先是解决XSS问题,然后才是CSRF问题。
六、SQL注入
本质:代码拼凑了用户可以控制的输入数据。
防御:使用预编译语句或存储过程;检查数据变量;使用安全函数进行数据编码。
七、拒绝服务攻击(DDOS:Distributed Denial of Service)
本质:对涌现资源的无限制滥用造成服务不可用
防御:解决的核心思路是限制每个不可信任的资源使用者的配额。
1.根据攻击特征,使用数据清洗设备进行数据清洗
2.在应用中针对每个IP做请求频率限制。
3.应用代码做好性能优化
4.使用验证码
总结
总结以上Web安全的相关知识,如下图:
本文作者 : cyningsun
本文地址 : https://www.cyningsun.com/04-13-2014/web-security.html
版权声明 :本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 CN 许可协议。转载请注明出处!