记一次WEB开发产生的XSS漏洞经历

项目采用的SSM,页面用的jsp格式(导致XSS产生的最大原因),其中用了很多EL表达式如${pageContext.request.contextPath},取根路径、${param.xx},取URL参数。

在第三方测评的时候,由于页面上使用了很多这种语法,所以被爆出了大量的XSS漏洞。

解决办法。使用JSTL标签库的c标签解决了EL表达式容易被XSS注入的问题。

<!-- c标签输出的变量会自动转义特殊字符 -->
<c:out value="${param.xx}"/>
<c:out value="${pageContext.request.contextPath}"/>

项目是多人协同开发的,所以难免有人会用不同的技术去实现一些功能,比如在页面渲染上,我喜欢用vue,有些人喜欢用jquery。
vue在渲染数据时,会自动对特殊字符进行转义,如<script>alert(1)</script>被转成了&lt;script&gt;alert(1)&lt;/script&gt;,注意,只是给vue属性赋值并不会转义,当被{{}}、:value=""、v-model渲染到页面上才会转义。
jquery赋值并不会转义,从而导致xss。

还有网上流行的一些办法,比如加一个XSS过滤器,在后台接收参数的时候做下转义。

参见:https://www.iteye.com/blog/bijian1013-2374277

如果后台存储的数据不进行转义的话,那么起码要在前端输出的时候做下转义

参见:https://www.cnblogs.com/willingtolove/p/11059325.html

原文地址:https://www.cnblogs.com/dagger9527/p/12074501.html

时间: 2024-11-02 22:09:04

记一次WEB开发产生的XSS漏洞经历的相关文章

WEB开发中常见的漏洞

一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取.更改.删除,以及进一步导致网站被嵌入恶意代码.被植入后门程序等危害. 通常情况下,SQL注入的位置包括: (1)表单提交,主要是POST请求,也包括GET请求: (2)URL参数提交,主要为GET请求

Web应用进行XSS漏洞测试

转自:http://www.uml.org.cn/Test/201407161.asp 对 WEB 应用进行 XSS 漏洞测试,不能仅仅局限于在 WEB 页面输入 XSS 攻击字段,然后提交.绕过 JavaScript 的检测,输入 XSS 脚本,通常被测试人员忽略.下图为 XSS 恶意输入绕过 JavaScript 检测的攻击路径. 常见的 XSS 输入 XSS 输入通常包含 JavaScript 脚本,如弹出恶意警告框:<script>alert("XSS");<

使用 PHP 构建的 Web 应用如何避免 XSS 攻击

本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态内容进行编码.以及在服务器端对输入进行检测两方面介绍如何避免恶意的 XSS 攻击. 使用 PHP 构建的 Web 应用如何避免 XSS 攻击 Web 2.0 的发展为网络用户的互动提供了更多机会.用户通过在论坛发表评论,或是在博客发表留言都可能有意或无意输入一些破坏性的内容,从而造成网页不能正常显示

XSS漏洞解决方案之一:过滤器

一:web.xml文件 <!-- 解决xss漏洞 -->   <filter>     <filter-name>xssFilter</filter-name>      <filter-class>com.baidu.rigel.sandbox.core.filter.XSSFilter</filter-class>   </filter>   <!-- 解决xss漏洞 -->   <filter-ma

记一次web前端开发的电话面试

前几天经历了一次电话面试,因为我是应届生,题目难度不大,只是考察个人的基础知识的掌握程度.都怪我没有及时记下来~~题目不是很全.下面是我记得的,请看题. 问:png与jpg的区别是什么? 问:png8与png24的区别是什么?png的交错与不交错分别是什么意思? 问:闭包是什么?举个例子说明? 问:匿名函数是什么?举个例子说说它的用法? 问:根据什么知道页面内容是缓存着的? 问:浏览器的状态码的问题,302是什么意思? 问:无缝滚动用jquery的时候是用什么方法实现? 问:javascript

Java Web 开发填坑记- 如何正确的下载 Eclipse

一直以来,做 Java web 开发都是用 eclipse , 可是到 eclipse 官网一看,我的天 http://www.eclipse.org/downloads/eclipse-packages/ 那么多应该下载哪一个?这是一个问题? 其实 eclipse 为每一种开发者,都提供了不同的版本.

Java Web开发 - 持久型/存储型XSS漏洞

1.什么是XSS漏洞攻击? XSS是跨站脚本攻击(Cross Site Scripting)的简称,之所以叫XSS而不是CSS相比大家都能明白了吧,那就是为了跟层叠样式表(Cascading Style Sheets,CSS)区别. 2.XSS漏洞攻击的原理 恶意攻击者往web页面中插入恶意HTML代码,当用户浏览该web页面时,嵌入到该web页面的恶意HTML代码就会被执行,从而达到恶意攻击用户的特殊目的. XSS漏洞又分为两类,一类是持久型/存储型XSS,另一类是反射型XSS: 1)持久型/

Python FAQ:Web开发

该怎么用Python来编写一个Web应用呢? 这是一个相当复杂的问题,甚至很容易就能写一本书来探讨Web开发与Python,以及如何关联两者,所以我很想先把这个问题放一放.但是鉴于我刚相当粗暴地捣毁了PHP,明智些,还是回答这个问题吧,宜早不宜迟. 最直接简单的回答是:不要再读了,马上使用Flask着手构建一样东西.然而,我觉得还有更好回答. 本文并非是教程.也许将来我会写一篇,但现在已经存在大量的教程了,我认为你可以阅读那些文档.相反,本文是为新手而写的Python Web开发相关事情的概览.

ASP.NET4 与 VS2010 Web 开发页面服务改进

转:http://blog.163.com/kele_lipeng/blog/static/81345278201132754729336/ 作者:朱先忠 本文将接着上一篇 ASP.NET4与VS2010Web开发核心服务改进 继续讨论核心ASP.NET服务方面的改进. 四.永久重定向页面 一种常见的Web应用程序做法是,随着时间的推移经常移动网页和其他内容,从而导致搜索引擎失效链接的积累.在ASP.NET中,开发商通常采用的处理旧网址请求的方案是,使用 Response.Redirect方法把