从互联网诞生起,安全威胁就一直伴随着站点的发展,各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。
1、XSS攻击
XSS攻击即跨网站脚本攻击(Cross Site Script),指黑客通过篡改网页。注入恶意HTML脚本。在用户訪问网页时。控制用户浏览器进行恶意操作的一种攻击方式。
常见的XSS攻击类型有两种,一种是反射型。攻击者诱使用户点击一个嵌入恶意脚本的链接。达到攻击的目的,例如以下图所看到的:
还有一种XSS攻击是持久型XSS攻击,黑客提交含有恶意脚本的请求。保存在被攻击的Web网站的数据库中,用户浏览网页时,恶意脚本被包括在正常页面中,达到攻击的目的,例如以下图所看到的:
消毒
对某些html字符转义。如“>”转义为“>”等。
HttpOnly
即浏览器禁止页面javascript訪问带有HttpOnly属性的Cookie。可通过对Cookie加入HttpOnly属性,避免被攻击者利用Cookie获取用户信息。
2、注入攻击
注入攻击主要有两种形式,SQL注入攻击和OS注入攻击。SQL注入攻击的原理例如以下图所看到的。
攻击者在HTTP请求中注入恶意的SQL命令,server用请求构造数据库SQL命令时。恶意SQL被一起构造。并在数据库中执行。
除了SQL注入。攻击者还依据详细应用,注入OS命令、编程语言代码等达到攻击目的。
消毒
和防XSS攻击一样,过滤请求数据中可能注入的SQL,如"drop table"等。
另外还能够利用參数绑定来防止SQL注入。
3、CSRF攻击
CSRF即Cross Site Request Forgery 跨网站请求伪造,攻击者通过跨网站请求。以合法用户的身份进行非法操作。CSRF的主要手段是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。
其核心是利用了浏览器Cookie或serverSession策略,盗取用户身份。
表单Toke
CSRF是一个伪造用户请求的操作,所以须要构造用户请求的全部參数才干够,表单Token通过在请求參数中添加随机数的办法来组织攻击者获取全部请求參数。
验证码
更加简单高效,即请求提交时,须要用户输入验证码,以避免在用户不知情的情况下被攻击者伪造请求。
Referer Check
HTTP请求头的Referer域中记录着请求来源,可通过检查请求来源,验证其是否合法,还能够利用这个功能来实现突破防盗链。
4、WEB应用防火墙
ModSecurity是一个开源的Web应用防火墙,探測攻击并保护Web应用程序,既能够嵌入到Web应用server中。也能够作为一个独立的应用程序启动。
ModSecurity最早仅仅是Apache的一个模块,如今已经有JAVA、NET多个版本号。并支持Nginx。
ModSecurity採用处理逻辑与攻击规则集合分离的架构模式。
处理逻辑(运行引擎)负载请求和对应的拦截过滤。规则载入运行等功能。
而攻击规则集合则负责描写叙述对详细攻击的规则定义、模式识别、防御策略等功能。处理逻辑比較稳定,规则集合须要不断针对漏洞进行升级。这是一种可扩展的架构设计。
5、信息加密技术
为了保护站点的敏感数据。应用须要对某些数据进行加密处理,信息加密技术科分为三类:单向散列加密、对称加密和非对称加密。
5.1单向散列加密
单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的。例如以下图所看到的。
单向散列加密一般主要用途是用户password的加密。使password不可逆的保存到数据库中。即便数据库信息泄露。攻击者也无法知晓原password是什么。
常见的单向散列算法有MD5、SHA等。
5.2对称加密
即加密和解密都使用同一个密钥,例如以下图所看到的:
经常使用的对称加密算法有DES算法、RC算法等。对称加密是一种传统的加密手段,也是最经常使用的加密手段。适用于大多数场合。
5.3非对称加密
非对称加密使用的加密和解密不是同一密钥。当中一个对外界公开,被成为公钥,还有一个仅仅有全部者知道。被称作私钥。用公钥加密的信息必须用私钥才干解开,反正。用私钥加密的信息仅仅实用公钥才干解开,例如以下图所看到的:
非对称加密经常使用算法有RSA等。HTTPS传输中浏览器使用的数字证书实质上是经过权威机构认证的非对称加密的公钥。