一、网站应用攻击与防御
1 XSS攻击
XSS攻击即跨站点脚本攻击(Cross Site Script)。
黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。
常见的XSS攻击类型有两种,一种是反射型,另外一种XSS攻击是持久型XSS攻击。
1.1 反射型
攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的。
攻击者可以采用XSS攻击,偷取用户Cookie、密码等重要数据,进而伪造交易、盗窃用户财产、窃取情报。如下图:
1.2 持久型
黑客提交含有恶意脚本的请求,保存在被攻击的Web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的。
1.3 消毒
对某些html危险字符转义,如“>”转义为“>”、“<”转义为“<”等。
消毒几乎是所有网站最必备的XSS防攻击手段。
1.4 HttpOnly
对于存放敏感信息的Cookie,如用户认证信息等,可通过对该Cookie添加HttpOnly属性,避免被攻击脚本窃取。
2 注入攻击
注入攻击分为SQL注入攻击和OS注入攻击。
2.1 SQL注入攻击
SQL注入攻击需要攻击者对数据库结构有一定了解。获取数据库结构的方式有以下几种:
开源
如果网站采用开源软件搭建,如用Discuz!搭建论坛网站,那么网站数据库结构就是公开的,攻击者可以直接获得。
错误回显
故意构造非法参数,使服务端异常信息输出到浏览器端,为攻击猜测数据库表结构提供了便利。
盲注
防御SQL注入攻击首先要避免被攻击者猜测到表名等数据库表结构信息 。
防御sql注入攻击主要有以下手段:
消毒
通过正则匹配,过滤请求数据中可能注入的SQL
参数绑定
使用预编译手段,绑定参数是最好的防SQL注入方法。
攻击者的恶意SQL会被当做SQL的参数,而不是SQL命令被执行。
2.2 os注入攻击
攻击者根据具体应用,注入os命令、编程语言代码等,利用程序漏洞,达到攻击目的。
3 CSRF攻击
CSRF,攻击者通过跨站请求,以合法用户的身份进行非法操作。
CSRF的主要手法是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。其核心是利用了浏览器Cookie或服务器Session策略,盗取用户身份。
CSRF的防御手段主要是识别请求者身份:
表单Token
表单Token通过在请求参数中增加随机数的办法来阻止攻击者获得所有请求参数
服务器检查请求参数中Token的值是否存在并且正确以确定请求提交者是否合法。
验证码
Referer check
很多网站使用这个功能实现图片防盗链(如果图片访问的页面来源不是来自自己网站的网页就拒绝)。
4 其它攻击和漏洞
4.1 Error Code
即错误回显。很多web服务器默认是打开错误输出信息的,即服务端未处理的错误信息会直接显示在客户端。
防御手段也很简单,通过配置Web服务器参数,跳转500页面(HTTP响应码500表示服务器内部错误)到专门的错误页面即可,Web应用常用的MVC框架也有这个功能。
4.2 HTML注释
有很多程序员会在前端页面加上注释,方便调试或者其他原因。这些注释就会给攻击者提供便利。所以代码发布前应进行review或者自动扫描,避免html注释出现在客户端。
4.3 文件上传
一般网站都会有文件上传功能,如果上传的是可执行的程序,并通过该程序在服务端执行命令,那么攻击者几乎可以为所欲为。
最有效的防御手段是设置上传文件白名单,只允许上传可靠的文件类型。此外还可以修改文件名、使用专门的存储等手段,保护服务器免受上传文件攻击。
4.4 路径遍历
攻击者通过相对路径,遍历未开放的目录和文件。
防御方法主要是将JS、CSS等资源文件部署在独立服务器、使用独立域名,其他文件不使用静态URL访问,动态参数不包含文件路径信息。
5 Web应用防火墙
ModSecurity是一个开源的Web应用防火墙,探测攻击并保护Web应用程序,既可以嵌入到Web应用服务器中,也可以作为一个独立的应用程序启动。
ModSecurity采用处理逻辑与攻击规则集合分离的架构模式。
二、信息加密技术及密钥安全管理
信息加密技术可以分为三类:单向散列加密、对称加密和非对称加密。
1 单向散列加密
单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出。
这个散列计算过程是单向的,即不能对固定长度的输出进行计算从而获得输入信息,如图所示:
利用单向散列的这个特性。可以进行密码的加密保存,具体过程如下:
由于人们设置密码具有一定的模式,因此通过彩虹表(人们常用密码和对应的密文关系表)等手段可以进行猜测式破解。
为了加强单向散列计算的安全性,还会给散列算法加点盐(salt),salt相当于加密的密钥,增加破解的难度。
2 对称加密
对称加密是指加密和解密使用的密钥是同一个密钥(或者可以互相推算),如下图:
对称加密的优点是算法简单,加解密效率高,系统开销小,适合对大量数据加密。缺点是加解密使用同一个密钥,远程通信的情况下如何安全的交换密钥是个难题,如果密钥丢失,那么所有的加密信息也就没有秘密可言了。
常用的对称加密算法有DES算法等。
DES算法简介
3 非对称加密
非对称加密和解密使用的密钥不是同一密钥,其中一个对外界公开,被称作公钥,另一个只有所有者知道,被称作私钥。
在实际应用中,常常会混合使用对称加密和非对称加密。先使用非对称加密技术对对称密钥进行安全传输,然后使用对称加密技术进行信息加解密与交换。而有时,对同一个数据两次使用非对称加密,可同时实现信息安全传输与数字签名的目的。
常用的非对称算法有RSA算法等。https协议中浏览器使用的数字证书实质上是经过权威认证的非对称加密的弓腰。
RSA算法简介
4 密钥安全管理
以上几种加密技术,安全保密的前提是密钥的安全。单向散列加密的salt,对称加密的密钥,非对称加密的私钥,一旦泄露,就失去了秘密性。
改善密钥安全性的方案有两种:
一种方案是把密钥和算法放在一个独立的服务器上,甚至做成一个专用的硬件设施,对外提供加密和解密服务,应用系统通过调用这个服务,实现数据的加解密。但是成本较高,远程调用开销也大。
另一种方案是将加解密算法放在应用系统中,密钥则放在独立服务器中,为了提高密钥的安全性,实际存储时,密钥被切分成数片,加密后分别保存在不同存储介质中,兼顾密钥安全性的同时又改善了性能: