// =======================================================================================

*:全球约70%的Web应用攻击来自XSS攻击和SQL注入,此外还包括CSRF,Session劫持等

一、XSS攻击

1、XSS攻击:跨站点脚本攻击(Cross Site Script)

*:黑客通过在网页文件嵌入恶意JavaScript脚本,在用户打开网页时,该脚本控制浏览器进行恶意操作

*:反射型XSS:攻击者诱使用户点击一个嵌入恶意脚本的链接,恶意脚本在攻击者服务器中

*:持久性XSS:攻击者提交带恶意脚本的请求,保存在被攻击Web站点的服务器中,用户正常访问Web站点均受攻击

*:消毒:对特殊字符转义,如"< >"等

*:HttpOnly属性:Cookie添加HttpOnly属性,使得攻击者无法通过JavaScript脚本窃取Cookie

二、SQL注入

1、SQL注入:指攻击者在HTTP请求中注入恶意SQL命令,使得应用服务器调用请求构造SQL时和恶意SQL命令一起构造,并在数据库执行

2、SQL注入需攻击者了解数据库结构,一般攻击者对通过下面方式获取:

*:开源软件,如Discuz等

*:消毒:通过正则表达式过滤"drop table"等可能注入的SQL

*:参数绑定:使用预编译绑定参数是最好的手段,恶意SQL只会被当成SQL参数而不是命令

三、CSRF攻击(身份伪造)

1、CSRF攻击:跨站点请求伪造(Cross Site Request Forgery)

*:攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易等

*:核心为利用用户浏览器Cookie或服务器Session策略,盗取用户身份

*:表单Token:CSRF伪造用户请求,需构造用户请求的所有参数,表单Token通过在请求参数中增加一个随机数Token来阻止,每次响应页面Token均不同

*:验证码:即需手动输入验证码,但这是一个不好的用户体验

*:Referer源检查:Http请求头的Referer域中记录着请求来源,通过检查请求来源判断请求是否合法

四、其他攻击和漏洞

1、错误回显:即Web服务器异常时,直接把异常堆栈信息输出给客户端浏览器

*:防御方案很简单,只需配置跳转500页面到专门错误页面即可

2、HTML注释:在客户端的HTML代码中注释相关程序信息,给黑客造成攻击便利

3、文件上传:攻击者可以用网站提供的文件上传功能上传可执行文件

*:可通过限定上传文件格式等方式来防御

4、路径遍历:攻击者在URL中使用相对路径,遍历系统未开放的目录和文件

*:防御方法主要为将Js、HTML等资源文件独立部署等

// ===========================================================

一、单向散列加密

*:单向散列加密指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,如MD5和sha1等

*:虽然没有破解单向散列加密的算法,但是由于人为设置密码有一些常见模式(如123等),因此攻击者常用彩虹表(人为常用密码和对应密文的映射)等方式进行猜测式破解

*:为了加强单向散列计算的安全性,还可以给散列算法加盐,盐相当于加密的密钥

二、对称加密

*:对称加密指加密和解密使用同一个密钥,如DES和RC等。常用于信息需要安全交换和存储的场合,如Cookie加密等

*:优点是算法简单、加密效率高,缺点是远程通信如何安全地交换密钥是个难题

三、非对称加密

*:非对称加密的加密和解密使用不同密钥,其中一个对外公开的公钥,一个只有所有者知道的私钥,如RSA等。常用于信息安全传输,数字签名等场合

*:用公钥加密的信息需要用私钥才能解开,相反,用私钥加密的信息只有公钥能解开

四、密钥安全管理

*:前面讲述的这几种加密,能够起到安全效果的一个重要前提就是密钥的安全,即信息的安全是靠密钥保证的*:方案1:把密钥和算法放在独立服务器上由专人维护。较安全,但应用性能开销较大,每次加解密都需要一次远程服务调用

*:方案2:把加解密算法放在应用服务器,密钥放在独立服务器。可把密钥切分成片分别存储,兼顾安全性又改善性能

// ===========================================================

一、文本匹配

*:主要用于解决敏感词过滤问题

*:可使用正则表达式,但其效率较低,基本都是使用Trie树的变种,空间和时间复杂度都比较好

二、分类算法

*:主要用于网站垃圾信息的识别

*:简单实用的分类算法是贝叶斯分类,这是利用概率统计方法进行分类的算法

三、黑名单

*:将发布过垃圾信息的IP或者用户列入黑名单,以后将这些IP或者用户的信息过滤掉

*:黑名单可以用Hash表实现,存于内存做计算,但如果黑名单很大会很占内存。在需求不需完全精确情况下,可使用布隆过滤器替代Hash表