xss防御代码Java xss的防御

如何正确防御xss攻击传统防御技术
2.1.1基于特征的防御
传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查 。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击 。
2.1.2 基于代码修改的防御
和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:
1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤 。
2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行 。
3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie 。
当然,如上方法将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点 。
并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞 。
扩展资料:
XSS攻击的危害包括
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
受攻击事件
新浪微博XSS受攻击事件
2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件 。
大量用户自动发送诸如:
“郭美美事件的一些未注意到的细节”,“建党大业中穿帮地方”,“让女人心动的100句诗歌”,“这是传说中的神仙眷侣啊”等等微博和私信 , 并自动关注一位名为hellosamy的用户 。
事件的经过线索如下:
20:14,开始有大量带V的认证用户中招转发蠕虫
20:30,某网站中的病毒页面无法访问
20:32,新浪微博中hellosamy用户无法访问
21:02,新浪漏洞修补完毕
百度贴吧xss攻击事件
2014年3月9晚,六安吧等几十个贴吧出现点击推广贴会自动转发等 。并且吧友所关注的每个关注的贴吧都会转一遍 , 病毒循环发帖 。并且导致吧务人员,和吧友被封禁 。
参考资料:
XSS攻击-百度百科
用JAVA做一个网站,现在要做防止XSS攻击,请问怎么防止这种攻击过滤特定符号pre t="code" l="java"public static String guolv(String a) {
a = a.replaceAll("%22", "");
a = a.replaceAll("%27", "");
a = a.replaceAll("%3E", "");
a = a.replaceAll("%3e", "");
a = a.replaceAll("%3C", "");
a = a.replaceAll("%3c", "");
a = a.replaceAll("", "");
a = a.replaceAll("", "");
a = a.replaceAll("\"", "");
a = a.replaceAll("'", "");
a = a.replaceAll("\\+", "");
a = a.replaceAll("\\(", "");
a = a.replaceAll("\\)", "");
a = a.replaceAll(" and ", "");
a = a.replaceAll(" or ", "");
a = a.replaceAll(" 1=1 ", "");
return a;
}
如何在jetty服务器层面解决XSS漏洞?一,给cookie的属性设置为httponly
这样能够避免js读取Cookie信息(设置后有助于缓解XSS,但是XSS除了劫持Cookie之外,还可以模拟用户的身份进行操作)
二,进行输入检查
如果仅仅在客户端通过JS来做输入校验,有可能会被攻击者绕过,WEB开发中的普遍做法是同时在客户端和服务端做校验 。这种输入检查的方式也称之为XSS Filter 。
三,输出检查
一般说来,除了富文本输出之外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击 。
四,防御DOM BasedXSS
前面提到的集中方法,对于这种类型不太适用 , 需要特别对待 , 那如何才能防御呢?
首先是$var输出到script是,应该执行一次javasriptEncode,其次在doument.write输出到HTML页面时,如果是输出到事件或者脚本 , 可以再做一次javaScriptEncode,如果是输出到HTML内容或者属性,则可以做一次HtmlEncode 。
上面提到的这些防御方法都属于安全生产的环节,也就是说实在开发同学写代码的时候要特别注意 , 这种是否做的规范,可以通过工具扫描代码的方式来实现,也就是白盒测试,如果代码没有做输入或者输出检查,则发报告提示开发来进行修改 。但是有些场景白盒没法覆盖到,例如输出jsonp类型的接口,对于callback参数的原味输出,白盒有时候就扫不出来 , 这时候,可以通过黑盒测试工具,模拟入参的各种情况,也就是穷举,来构造,如果发生了XSS请求,则发出报告即可 。
java正则表达式怎么防止代码漏洞javaWeb安全漏洞及处理方式
关注
转载自:
1、SQL注入攻击
SQL注入攻击就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串xss防御代码Java , 最终达到欺骗服务器执行恶意的SQL命令 。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力 , 它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库 , 而不是按照设计者意图去执行SQL语句 。
随着B/S框架结构在系统开发中的广泛应用 , 恶意攻击者利用SQL命令在Web表单中输入合法的字符或查询字符串来欺骗服务器执行SQL命令 。当注入攻击得逞后,Web程序将泄露大量用户隐私数据和数据库中数据结构 。攻击者能够获得系统较高的访问权限 , 进行破坏操作 。
SQL注入可以分为平台层注入和代码层注入 。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行xss防御代码Java了非法的数据查询 。基于此,SQL注入的产生原因通常表现在以下几方面:
1)不当的类型处理;
2)不安全的数据库配置;
3)不合理的查询集处理;
4)不当的错误处理;
5)转义字符处理不合适;
6) 多个提交处理不当 。
解决方法:
数据库安全通信包括SQL注入攻击的防范、安全设置、异常信息处理三个方面 。
1.服务端Filter对访问者输入的字符进行过滤检验,但是攻击者经常把危险字符潜藏在用户输入的有效字符中完 成过滤检验 。
2.通过正则表达式对页面的文本框输入的数据进行限制可以减少过滤检验存在的漏洞 。
3.使用prepareStatment预编译sql语句
2、XSS跨站脚本攻击
跨站脚本(Cross-site scripting , 简称XSS) , 是一种迫使Web站点回显可执行代码的攻击技术,而这些可执行代码由攻击者提供、最终为用户浏览器加载 。不同于大多数攻击(一般只涉及攻击者和受害者) , XSS涉及到三方,即攻击者、客户端与网站 。XSS的攻击目标是为了盗取客户端的cookie或者其xss防御代码Java他网站用于识别客户端身份的敏感信息 。获取到合法用户的信息后,攻击者甚至可以假冒最终用户与网站进行交互 。
XSS 属于被动式的攻击 。攻击者先构造一个跨站页面,利用SCRIPT、IMG、IFRAME等各种方式使得用户浏览这个页面时,触发对被攻击站点的HTTP 请求 。此时,如果被攻击者如果已经在被攻击站点登录,就会持有该站点cookie 。这样该站点会认为被攻击者发起了一个HTTP请求 。而实际上这个请求是在被攻击者不知情情况下发起的,由此攻击者在一定程度上达到了冒充被攻击者的目的 。精心的构造这个攻击请求 , 可以达到冒充发文,夺取权限等多个攻击目的 。在常见的攻击实例中 , 这个请求是通过script 来发起的,因此被称为Cross Site Script 。
XSS漏洞成因是由于动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“”、“”),然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交代码会被受害用户的浏览器解释执行 。
分为三种类型:
1)反射型(数据流向:浏览器 -后端 - 浏览器)
反射型XSS脚本攻击即如我们上面所提到的XSS跨站脚本攻击方式,该类型只是简单地将用户输入的数据直接或未经过完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可被浏览器执行的代码数据 。由于此种类型的跨站代码存在于URL中,所以黑客通常需要通过诱骗或加密变形等方式,将存在恶意代码的链接发给用户,只有用户点击以后才能使得攻击成功实施 。
2)存储型(数据流向是:浏览器 -后端 - 数据库 - 后端- 浏览器)
存储型XSS脚本攻击是指Web应用程序会将用户输入的数据信息保存在服务端的数据库或其他文件形式中,网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示,因此存储型XSS具有较强的稳定性 。
存储型XSS脚本攻击最为常见的场景就是在博客或新闻发布系统中,黑客将包含有恶意代码的数据信息直接写入文章或文章评论中,所有浏览文章或评论的用户,都会在他们客户端浏览器环境中执行插入的恶意代码 。
3)基于DOM(数据流向是:URL--浏览器 )
基于DOM的XSS跨站脚本攻击是通过修改页面DOM节点数据信息而形成的XSS跨站脚本攻击 。不同于反射型XSS和存储型XSS,基于DOM的XSS跨站脚本攻击往往需要针对具体的javascript DOM代码进行分析,并根据实际情况进行XSS跨站脚本攻击的利用 。
解决方法:
1).输入过滤 。对用户的所有输入数据进行检测,比如过滤其中的“”、“”、“/”等可能导致脚本注入的特殊字符,或者过滤“script”、“javascript”等脚本关键字,或者对输入数据的长度进行限制等等 。同时,我们也要考虑用户可能绕开ASCII码,使用十六进制编码来输入脚本 。因此,对用户输入的十六进制编码,我们也要进行相应的过滤 。只要能够严格检测每一处交互点 , 保证对所有用户可能的输入都进行检测和XSS过滤 , 就能够有效地阻止XSS攻击 。
2).输出编码 。通过前面对XSS攻击的分析,我们可以看到 , 之所以会产生XSS攻击 , 就是因为Web应用程序将用户的输入直接嵌入到某个页面当中,作为该页面的HTML代码的一部分 。因此,当Web应用程序将用户的输入数据输出到目标页面中时,只要用HtmlEncoder等工具先对这些数据进行编码,然后再输出到目标页面中 。这样,如果用户输入一些HTML的脚本,也会被当成普通的文字,而不会成为目标页面HTML代码的一部分得到执行.
3、CSRF跨站请求伪造漏洞防护
CSRF是CrossSite Request Forgery的缩写 , 乍一看和XSS差不多的样子,但是其原理正好相反 , XSS是利用合法用户获取其信息 , 而CSRF是伪造成合法用户发起请求 。
字面理解意思就是在别的站点伪造了一个请求 。专业术语来说就是在受害者访问一个网站时 , 其 Cookie 还没有过期的情况下,攻击者伪造一个链接地址发送受害者并欺骗让其点击,从而形成 CSRF 攻击 。
根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址 。在通常情况下 , 访问一个安全受限页面的请求必须来自于同一个网站 。
解决方案:
配置FILTER拦截用户所有请求(POST/GET),对用户请求Referer头URL进行合法性校验 。
4、URL链接注入漏洞防护
链接注入是修改站点内容的行为,其方式为将外部站点的 URL 嵌入其中,或将有易受攻击的站点中的脚本 的 URL 嵌入其中 。将URL 嵌入易受攻击的站点中 , 攻击者便能够以它为平台来启动对其他站点的攻击,以及攻击这个易受攻击的站点本身 。
解决方案:
1,二次验证,进行重要敏感操作时,要求用户进行二次验证 。
2,验证码,进行重要敏感操作时,加入验证码 。
3 , 验证 HTTP 的 Referer 字段 。
4,请求地址中添加 Token 并验证 。
5,HTTP 头中自定义属性并验证 。
5、会话COOKIE中缺少HttpOnly防护
会话cookie中缺少HttpOnly属性会导致攻击者可以通过程序(JS脚本、Applet等)获取到用户的cookie信息 , 造成用户cookie信息泄露,增加攻击者的跨站脚本攻击威胁 。
HttpOnly是微软对cookie做的扩展,该值指定cookie是否可通过客户端脚本访问 。Microsoft Internet Explorer 版本 6 Service Pack 1 和更高版本支持cookie属性HttpOnly 。
如果在Cookie中没有设置HttpOnly属性为true,可能导致Cookie被窃取 。窃取的Cookie可以包含标识站点用户的敏感信息 。
如果在Cookie中设置HttpOnly属性为true,兼容浏览器接收到HttpOnly cookie , 那么客户端通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这将有助于缓解跨站点脚本威胁 。
解决方案:
配置filter拦截器 , 将服务器端返回请求,向所有会话cookie中添加“HttpOnly”属性 。
示例代码:
HttpServletResponseresponse=(HttpServletResponse)paramServletResponse;
response.setHeader("SET-COOKIE","JSESSIONID=" + sessionid + "; HttpOnly");
6、点击劫持漏洞(Clickjacking)防护
点击劫持是一种视觉上的欺骗手段,攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作 , 此时用户在不知情的情况下点击了透明的iframe页面 。通过调整iframe页面的位置 , 可以诱使用户恰好点击在iframe页面的一些功能性按钮上 。
解决方案:
配置FILTER拦截器,在服务器端返回请求中,使用一个HTTP头“X-Frame-Options”值为SAMEORIGIN-同源策略,则frame页面的地址只能为同源域名下面的页面,防止点击劫持漏洞发生 。
示例代码:
HttpServletResponseresponse=(HttpServletResponse)paramServletResponse;
response.addHeader("x-frame-options","SAMEORIGIN");
7、HTTP host 头攻击漏洞
使用HTTP代理工具,可以篡改HTTP报文头部中HOST字段时 , 该值可被注入恶意代码 。因为需要控制客户端的输入,故该漏洞较难利用 。
解决方案:
配置FILTER拦截器,对请求输入HOST头信息进行信息安全性校验,防止HOST头信息被恶意篡改利用 。
示例代码:
HttpServletRequest request =(HttpServletRequest)servletRequest;
//主机ip和端口 或 域名和端口
String myhosts = request.getHeader("host");
if(!StringUtils.equals(myhosts, "xx.xx.xxx.xxx:xxxx")
!StringUtils.equals(myhosts, "xx.xx.xxx.xxx:xxxx")
!StringUtils.equals(myhosts,"xx.xx.xxx.xxx:xxxx")StringUtils.equals(myhosts,"xx.xx.xxx.xxx")
!StringUtils.equals(myhosts,"xx.xx.xxx.xxx")!StringUtils.equals(myhosts,"xx.xx.xxx.xxx" ){
logger.error("======访问host非法,已拦截======");
response.sendRedirect(request.getContextPath() + "/login.jsp");
return;
}
8、越权访问漏洞防护
越权访问(Broken Access Control , 简称BAC)是Web应用程序中一种常见的漏洞,分为垂直越权访问和水平越权访问 。垂直越权是指不同用户级别之间的越权,如普通用户执行管理员用户的权限 。水平越权是指相同级别用户之间的越权操作 。
Web应用程序如果存在越权访问漏洞,可能导致以下危害:
1)导致任意用户敏感信息泄露xss防御代码Java;
2)导致任意用户信息被恶意修改或删除 。
解决方案:
配置FILTER拦截器,对请求所有URL进行拦截 , 对于需要进行授权的URL进行权限校验,防止用户越权访问系统资源 。
9.弱口令漏洞
解决方案:最好使用至少6位的数字、字母及特殊字符组合作为密码 。数据库不要存储明文密码,应存储MD5加密后的密文 , 由于目前普通的MD5加密已经可以被破解 , 最好可以多重MD5加密,或者多种加密方式叠加组合 。
10.JSP页面抛出的异常可能暴露程序信息 。
有经验的入侵者,可以从JSP程序的异常中获取很多信息,比如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等 。
解决方案:自定义一个Exception,将异常信息包装起来不要抛到页面上 。
11.本地缓存漏洞
合法用户“注销”后 , 在未关闭浏览器的情况下,点击浏览器“后退”按钮 , 可从本地页面缓存中读取数据 , 绕过了服务端filter过滤 。
解决方案:配置filter对存放敏感信息的页面限制页面缓存 。如:
httpResponse.setHeader("Cache-Control","no-cache");
httpResponse.setHeader("Cache-Control","no-store");
httpResponse.setDateHeader("Expires",0);
httpResponse.setHeader("Pragma","no-cache");
12.文件上传漏洞 。
前台仅使用JS对文件后缀做了过滤,这只能针对普通的用户,而恶意攻击者完全可以修改表单去掉JS校验 。
13.Java WEB容器默认配置漏洞 。
如TOMCAT后台管理漏洞,默认用户名及密码登录后可直接上传war文件获取webshell 。
解决方案:最好删除 , 如需要使用它来管理维护,可更改其默认路径 , 口令及密码 。
3大Web安全漏洞防御详解:XSS、CSRF、以及SQL注入解决方案 随着互联网的普及,网络安全变得越来越重要 。Java等程序员需要掌握基本的web安全知识,防患于未然 , 下面列举一些常见的安全漏洞 , 以及对应的防御解决方案 。
1.前端安全
2.后端安全
1.XSS简介
跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式 。
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点 , 进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码 。
2.XSS攻击的危害
1、盗取用户资料 , 比如:登录帐号、网银帐号等
2、利用用户身份,读取、篡改、添加、删除企业敏感数据等
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
3.防止XSS解决方案
XSS的根源主要是没完全过滤客户端提交的数据,所以重点是要过滤用户提交的信息 。
1.CSRF简介
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF , 是一种对网站的恶意利用 。
XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站 。与XSS攻击相比,CSRF更具危险性 。
2.CSRF攻击的危害
主要的危害来自于,攻击者盗用了用户身份,发送恶意请求 。比如:模拟用户的行为发送邮件,发消息,以及支付、转账等财产安全 。
3.防止CSRF的解决方案
1.简介
SQL注入是比较常见的网络攻击方式之一,主要是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,实现无帐号登录,甚至篡改数据库 。
2.SQL注入的危害
3.防止SQL注入的方式
通常情况下,SQL注入的位置包括:
(1)表单提交,主要是POST请求,也包括GET请求;
(2)URL参数提交 , 主要为GET请求参数;
(3)Cookie参数提交;
(4)HTTP请求头部的一些可修改的值 , 比如Referer、User_Agent等;
4.简要举例
举一个简单的例子,select * from user where id=100 ,表示查询id为100的用户信息,如果id=100变为 id=100 or 2=2,sql将变为:select * from user where id=100 or 2=2,将把所有user表的信息查询出来,这就是典型的sql注入 。
5.防止SQL注入的解决方案
【xss防御代码Java xss的防御】 1)对用户的输入进行校验,使用正则表达式过滤传入的参数
2)使用参数化语句,不要拼接sql,也可以使用安全的存储过程
3)不要使用管理员权限的数据库连接,为每个应用使用权限有限的数据库连接
4)检查数据存储类型
5)重要的信息一定要加密
总之就是既要做好过滤与编码并使用参数化语句,也要把重要的信息进行加密处理,这样sql注入漏洞才能更好的解决 。

回复关键词 【高并发】即可获?。?
xss防御代码Java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于xss的防御、xss防御代码Java的信息别忘了在本站进行查找喔 。

    推荐阅读