如何防止XSS攻击

2024-01-05

渗透测试团队告诉我,以下 URL 正在引发 XSS 攻击 -

这是我的 download_msg.jsp 代码

        <% String download_msg = null;
           if (session == null || session.getAttribute("user") == null) {
               download_msg = "Error message";
           } else {
               download_msg =
              (OLSUser)session.getAttribute("user")).getReportInfo().getDownloadMsg();
           } 
        %>

       <html>
        <head>
         <SCRIPT LANGUAGE='JavaScript' SRC='/Test/test.js'></SCRIPT>
           <SCRIPT LANGUAGE='JavaScript'>init('StmsReps');</SCRIPT>
             <script language="JavaScript">
            function redirect() {
             if (window.focus)
            self.focus();
         this.location = "/test/DownloadReport?<%=request.getQueryString()%>";
    }
        </script>
     <title>XSS</title>
     </head>
      <body marginwidth='0' marginheight='0' onload='javascript:redirect()'>
         <table width='90%' height='100%' align='center' border='0' cellspacing='0'
            cellpadding='0'>               
      <tr>
    <td align='center' class='header2'> <%= download_msg %></td>
   </tr>
   </table>
   </body>
   </html>

我发现jstl可以处理XSS攻击。请您提出建议,如果执行以下操作,那么可以吗?还是我需要做其他事情?

         <c:out value="<%= download_msg %>" escapeXml="true"/>

不,这还不够

this.location = "/test/DownloadReport?<%=request.getQueryString()%>";

攻击者可能能够发送带有查询字符串的链接,例如

?</script><script>alert(1337)//

or

?%22/alert('Pwned')

可能会单击链接并执行嵌入代码的天真的用户。

您必须应用适当的转义策略到处不受信任的输入被插入到模板中。


显然,我无法根据您的设置测试这些字符串,并且如果您使用它们进行测试,它们可能无法工作,因为浏览器通常会对查询字符串进行一些规范化,但您不应该依赖它来保护您免受查询中的 HTML 元字符的影响字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止XSS攻击 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 如何在 vbscript 中使用剪贴板? [复制]

    这个问题在这里已经有答案了 Editor s note While this question is specifically about copying a file reference to the clipboard its gene
  • 如何让 Spring MVC 视图 (JSP) 的一个简单案例能够正常工作?

    我的应用程序使用 Spring MVC 最新 3 2 2 创建一个返回 JSON 的 RESTful API 到目前为止我根本不需要视图层 但现在 除了 API 之外 我还需要一个简单的实用程序页面 纯动态 HTML 并希望使用 JSP 来
  • 使用 Google Analytics 进行 Javascript 重定向

    我需要帮助弄清楚如何在包含 Analytics 代码的同时成功重定向 我有一个子域设置http buuf fractalsystems org http buuf fractalsystems org 子域实际上只是一个子文件夹http f
  • 将“memberOf”属性添加到 ApacheDS

    我正在尝试在 Apache Directory 中模拟 Active Directory 的 memberOf 属性 我已将 memberOf 的以下条目添加到我的 LDIF 文件中 dn m oid 1 3 6 1 4 1 18060 0
  • 检查 url 是否包含 http:// 或 https:// [重复]

    这个问题在这里已经有答案了 可能的重复 检查 url 是否包含 http 或 https https stackoverflow com questions 7334491 check if the url is contains the
  • 如何在加载时打开 React Native Maps 标记的标注

    我希望在安装屏幕组件时打开所有标记的所有标注 目前 它仅在单击标记时打开 如何在功能组件中使用 useRef 来执行此操作 const markerRef useRef React createRef return
  • 使用 C++17 Constexpr 查找数组

    我正在尝试编写一个 constexpr find 函数 它将返回包含特定值的 std array 的索引 下面的函数似乎工作正常 除非包含的类型是const char include
  • 哪个班级设计比较好? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 哪个类设计更好 为什么 public class User public String UserName public String
  • 在 OS X 上以管理员权限运行脚本

    我已经尽力在 Stack Overflow 和互联网上找到许多脚本问题的解决方案 但我似乎找不到我需要的解决方案 我想要做的是创建一个更加自动化且点击次数更少的解决方案来删除系统上的所有移动缓存用户帐户 我一直在登录并手动转到用户帐户 然后
  • 如何设置 clojureScript 项目以使用规范并在运行时测试 clojure.core 函数?

    Clojure 1 9 推出specs https clojure org guides spec clojure core 库中的函数现在有规范 如何设置 clojurescript 项目以使用规范并在运行时测试 clojure core
  • 我可以采取什么措施来加快 S3 上传/更新速度?

    今天我一整天都在尝试向 s3 上传一些小东西 500 个目录中约有 20k 个文件 总计约 3GB 对于名为 简单存储服务 的服务来说 这是绝对合理的 我可以平均以大约 500k s 1mb s 1 8 到 3 6 GB h 之间 的速度上
  • Java 中最好的企业购物车是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 未针对早午餐编译供应商 CSS 文件

    我对 b 有疑问 电子邮件受保护 cdn cgi l email protection不编译 Bower Component CSS 文件 如同在 Brunch 中分离应用程序和供应商 CSS https stackoverflow com
  • 在 C 中创建数组时出现分段错误

    我最近迁移到一台新笔记本电脑 HP dv6119tx 英特尔酷睿 i5 4 GB RAM 它安装了 Windows 7 Home Premium 64 位 我正在尝试创建一个类型的数组int长度为 10 6 的 C Dev C 我曾经在我的
  • 在 React Native 中使用 PanResponder 锁定移动

    使用本机反应泛响应器 https facebook github io react native docs panresponder html 当屏幕触摸坐标超出一定值范围时 如何阻止移动 例如 如何防止用户将组件移动到屏幕上某个 y 位置
  • 比较堆转储 (HPROF) 文件

    是否可以比较两个 HPROF 文件 如何 根据我的发现 您只能比较对象的直方图 为此 请转到 直方图 视图 然后单击 与另一个堆转储比较 并选择另一个 hprof 文件 Here is screenshot
  • 获取孩子的所有孩子等等

    我使用 MongoDb 作为数据库 我想要所有孩子的孩子等等 让我们假设 A 有 B 和 C 孩子 B 有 D 和 E 孩子 D 有 F 和 G 孩子 所以当我查询子节点时A 我将所有孩子作为输出 例如 B C D E F G C Cust
  • 检查一个数据帧的值是否按确切顺序存在于另一个数据帧中

    我有 1 个数据数据框和多个 参考 数据框 我正在尝试自动检查数据帧的值是否与参考数据帧的值匹配 重要的是 这些值的顺序也必须与参考数据帧中的值相同 这些列是重要的列 但我的真实数据集包含更多列 下面是一个玩具数据集 Dataframe g
  • 1个月后自动将列表数据从一个列表复制到另一个列表

    我列出了在提交信息路径表单后动态存储数据的列表 我想在任何数据创建日期 30 天后存档此数据 你能建议我该怎么做吗 看看我可以通过工作流程做到这一点 但我如何设置条件 在创建任何列表后 30 天完成后 它将自动复制到其他列表中 首先我想问为
  • 如何防止XSS攻击

    渗透测试团队告诉我 以下 URL 正在引发 XSS 攻击 这是我的 download msg jsp 代码