编 写:袁亮 时 间:2014-10-10 功 能:xss攻击的总结文档 一、xss注入攻击危害 1、cookie、session等劫持,任意登陆其他用户、管理员的账号,从而做一些非法操作,比如登陆后台操作等等 2、挂马、流量劫持,将正常访问我们站点的流量导到他们的网站,从而实现谋利等 3、记录用户的键盘输入,从而实现盗取账号密码等 4、弹出广告,篡改页面,引导用户输入账号密码等 5、用管理员权限,进行提权,比如上传一些webshell,进一步来提权控制服务器等 6、使用劫持的流量进行攻击等操作 二、防御措施 1、cookie设置的时候,设置为http only,除非没办法一定要给js读取,否则都设置为http only 2、外部参数都要过滤:get、post、cookie 3、数字型参数,一律使用intval转型 4、字符串:纯文字,不允许html、js等效果的,使用strip_tags过滤,绝大多数都可以防止 4.1 非编辑器的内容输入,基本上都可以采用该策略 4.2 编辑器的内容,产品允许的情况下,也可以这么用,指定strip_tags的第二个参数,只允许部分标签 5、字符串:允许html,但不允许脚本执行(编辑器内容) 5.1 完全避免是不可能的 5.2 针对一般性的注入进行防范,参考附件中的removeXss函数,还是会被绕过 5.3 去除了一些危险标签,以及几乎所有的js事件,可能会存在误判,可根据各项目情况,自行修改过滤标签数组 5.4 一般只针对富文本编辑器产生的内容处理,其他的采用上面的方法处理 6、采用html purifier来过滤所有的xss攻击(成本较高,特别重要的项目的部分输入才引入) 6.1 只看了大概介绍,没有具体研究,有兴趣的可以试下 总结:数字型支架intval,非编辑器产生的字符串基本都可以用strip_tags过滤,编辑器的可采用removeXss进行过滤。 三、其他工具 1、web自动扫描工具(360漏洞扫描) 2、360webscan.php(自动拦截记录get、post、cookie中的非法请求,会上传报告,记得关掉,易误伤) 3、XSSer 4、app检测:http://service.security.tencent.com/kingkong 四、通用后台登陆验证升级: 1、产生的登陆cookie设置为http only,防止因为其他站点的xss工具导致cookie被劫持 2、验证生成的秘钥与验证时候的ip与agent绑定,防止非法使用 3、登陆产生的秘钥存储在session中,过期失效