WEB防XSS攻击

web开发中的常见漏洞,一般都发生在这些输入框中,一般情况我们会对这些输入域进行客户端的校验和服务器端的校验,但是在客户端的校验基本上起不来什么作用,因为客户端的所有代码我们都可以进行更改,防止漏洞的发生还是需要服务器端的校验,但是一般服务器端的校验都是校验你输入的字符或者是数字的长度等等。下面就演示一个XSS的漏洞注入,JSP页面中有两个输入框,姓名和个人介绍。当我们写入姓名和个人介绍之后,后台代码的处理就是进行一个简单的转发,然后把我们刚才的信息转发到一个jsp页面进行显示。

如果我们在个人介绍写上<script>document.location.href=‘http://www.baidu.com‘</script>,那么提交之就跳转到百度了,如果跳转到xxoo网站呢,这不就坏事了嘛。

我们需要自己在后台对这些特殊的字符进行转码,当这些字符再次显示到页面的时候不执行脚本。

使用什么样的方法才能阻止这种情况的发生,就是对 HTML 中的预留字符替换为字符实体 ,例如:对< 进行替换成 &lt,对>替换成&gt  等等。在这里把我们的代码进行一下完善防止XSS的出现:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        String username = req.getParameter("username");
        String describe = req.getParameter("describe");
        if(username == null || describe == null){
            username ="aaaa";
            describe="helloworld<script>alert(‘hello world‘);</script>";
        }
        //HTML 中的预留字符必须被替换为字符实体
        username = StringEscapeUtils.escapeHtml4(username);
        describe = StringEscapeUtils.escapeHtml4(describe);

        System.out.println(username +" : "+ describe);

        req.setAttribute("username", username);
        req.setAttribute("describe", describe);

        req.getRequestDispatcher("/info.jsp").forward(req, resp);
    }

这样我们就可以简单的防止XSS夸脚本攻击,代码中的 StringEscapeUtils是apache common-lang 包下的一个工具类,这个工具类也可以对sql中的保留字符进行转换,同时我们自己也可以自己实现一个对html中的预留字进行替换的程序。在后台打印的describe的字符已经被替换为:

helloworld&lt;script&gt;alert(‘hello world‘);&lt;/script&gt;  把这些内容显示在html中是不会执行javascript脚本的。

时间: 2024-10-12 22:05:56

WEB防XSS攻击的相关文章

web框架--XSS攻击和CSRF请求伪造

XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的. tornado中已经为我们给屏蔽了XSS,但是当我们后端向前端写前端代码的时候传入浏览器是字符串,而不是形成代码格式.所以就需要一个反解,在传入模板语言中前面加一个ra

PHP 防xss攻击

PHP直接输出html的,可以采用以下的方法进行过滤: 1.htmlspecialchars函数 2.htmlentities函数 3.HTMLPurifier.auto.php插件 4.RemoveXss函数(百度可以查到) PHP输出到JS代码中,或者开发Json API的,则需要前端在JS中进行过滤: 1.尽量使用innerText(IE)和textContent(Firefox),也就是jQuery的text()来输出文本内容 2.必须要用innerHTML等等函数,则需要做类似php的

基于Antisamy项目实现防XSS攻击

最近项目上线,请第三方公司进行了一次渗透性测试,被发现存在多处XSS攻击.由于我们对于URL的Get请求已经通过URLFilter进行了特殊字符过滤,Get请求的漏洞已经被封堵,但是对于Post请求考虑到我们项目存在表单提交,富文本编辑等功能,不敢贸然的使用Filter对关键字进行过滤. 为了解决上述问题,我们采用了OWASP的一个开源的项目AntiSamy来彻底解决XSS攻击问题.AntiSamy是一个可以确保用户输入的HTML.CSS.JavaScript符合规范的API.它确保了用户无法在

防XSS攻击

remove_xss function remove_xss($val) { // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed // this prevents some character re-spacing such as <java\0script> // note that you have to handle splits with \n, \r, and \t late

360[警告]跨站脚本攻击漏洞/java web利用Filter防止XSS/Spring MVC防止XSS攻击

就以这张图片作为开篇和问题引入吧 <options>问题解决办法请参考上一篇 如何获取360站长邀请码,360网站安全站长邀请码 首先360能够提供一个这样平台去检测还是不错的.但是当体检出来 看到漏洞报告,以为360会像windows上360安全卫士一样帮我们打好补丁.但是实际发现漏洞是要自己修复,并且php和asp aspx有360提供的补丁或者解决方案(想要看这些方案之前要申请为站长但是需要邀请码 这个可以在页面 页面左下角 360主机卫士感恩卡里面领取). 进入修复方案后发现java几

前端xss攻击

xss是什么 xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊目的.XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性.但是随着前端技术的不断进步,这方面的问题越来越受关注.举个简单例子 : 假如你现在是sns站点上一个用户,发布信息的功能存在漏洞可以执行js 你在 此刻输入一个 恶意脚本

textarea与XSS攻击

textarea用法 一般是用来接收用户输入,用于提交到服务器端,例如 网站的评论框. 如果此框也用于显示服务器端回传的内容,则有如下两种用法 法1 后台直接插入 <textarea><%=serverString;%></textarea> 法2 使用JS DOM接口赋值 textareaDom.value = "<%=serverString;%>" textarea content特性 即法1特性, 即使将html代码段插入text

WEB安全实战(三)XSS 攻击的防御

前言 上篇文章中提到了 XSS 攻击,而且,也从几个方面介绍了 XSS 攻击带来的严重影响.那么,这篇文章中,主要是针对 XSS 攻击做一个基本的防御,看看可以通过几种方式来修复这个特别常见的安全漏洞. 由于公司用的是 SpringMVC,因此,这次就主要基于 SpringMVC 来解决这些漏洞.当然,其实这些解决方案都是大同小异,对于什么环境来说根本无所谓.了解了原理,什么环境.什么语言都可以运用自如了.废话就不多说了,直接上解决方案. 解决方案 方案一 方案一主要是利用了 SpringMVC

关于Web安全的那些事(XSS攻击)

概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库.Click劫持.相对链接劫持等实施钓鱼,它带来的危害是巨大的,是web安全的头号大敌. 攻击的条件 实施XSS攻击需要具备两个条件: 一.需要向web页面注入恶意代码: 二.这些恶意代码能够被浏览