JavaScript 的客户端 DOM 打开重定向

2023-12-09

我在扫描以下代码时遇到客户端 DOM 打开重定向安全问题。 问题出现在我初始化变量“myPath”和“myHost”的位置。

我无法理解它如何受到网络钓鱼攻击以及如何修复它。 有人可以帮忙吗?

var query = this.value;

var myPath = window.location.href.substring(window.location.href.indexOf("/myapp"), window.location.href.indexOf(".html"));
var myHost = window.location.href.substring(0, window.location.href.indexOf("/myapp"));
query = encodeURIComponent(query);

if(myPath!==null){
    query = query + "mysite:" + myHost + myPath;
}

问题是您正在获取用户输入(来自网址栏的值)并重定向到它。这可能会或可能不会在任何有意义的攻击中被利用,但静态扫描器不理解您的应用程序逻辑 - 对于静态扫描器来说,它只是直接用于重定向的用户输入。

根据问题中的信息,我想不出有效的攻击,因为我认为它只是生成用户已经访问过的相同网址,最后没有 .html,也没有 # 部分(如果有) 。所以我认为用户将被重定向到他已经访问过的页面。然而,这并不意味着没有漏洞,它还取决于其他相关代码。例如,当用户可以使用此代码访问网址栏中没有任何 .html 的页面时,会发生什么情况会影响结果,另一个允许(部分)控制网址栏的漏洞也会影响结果,这可能是 SPA 之类的情况。因此,问题中没有足够的信息来确定它是否真正安全。

至于修复方法,请确保仅重定向到您想要的位置,而不是任何用户输入。例如,主机部分(甚至可能是路径)可以由服务器写入页面中,但我知道对于 SPA 之类的东西来说情况并非如此。您可以实施白名单验证以确保不会发生恶意重定向。也许它已经很好了,在这种情况下,您可以在您使用的扫描仪中设置此发现以减轻影响,但请考虑边缘情况,以及攻击者如何滥用这一点。他能用路径中的#来欺骗这个吗?他可以从没有 .html 的 URL 加载包含此代码的页面吗?或者已经有过多次了?如果他注册了像 someattack.html.hisdomain.com 这样的域并且有有效用户访问它怎么办? :)

URL 栏是一件棘手的事情,因为它是用户输入,但攻击者没有完全控制权 - 他必须点击应用程序页面,否则不会加载此 javascript。静态扫描器标记这一点的原因仍然是因为攻击者可能有some控制,对于 javascript 较多的单页应用程序,可能会更多一些,因为所有的 url 栏操作都在进行。

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

JavaScript 的客户端 DOM 打开重定向 的相关文章

  • 如何使用多个 select2 框过滤表格?

    我正在尝试使用 和多个 select2 框的类来过滤表格 表格 HTML table class table tbody tr class kanban event Austin td td tr tr class csm event Ch
  • 使用 Ajax Jquery post 请求进行 Json 劫持

    昨天 我读了一些关于如何预防的好文章使用 Asp Net MVC 进行 Json 劫持 http haacked com archive 2009 06 24 json hijacking aspx 规则是 永远不要通过 get 请求发送
  • 获取被调用的 javascript 文件的查询字符串

    是否可以在调用的 javascript 文件上使用 javascript 获取查询参数 如下所示 in html in file js console log this location query 这是否可能以某种方式实现 或者我必须使用
  • jQuery:查找具有特定自定义属性的元素

    我只想找到具有特定自定义属性值的元素 例如 我想找一个div其具有属性data divNumber 6 var number 6 var myDiv data divNumber number 我尝试使用http api jquery co
  • 以下文档我无法创建 Vue.js 3 的实例

    The code https stackblitz com edit vue ttt file src main js https stackblitz com edit vue ttt file src main js 问题 我正在尝试在
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • 有关 CredEnumerate 的帮助

    作为后续this https stackoverflow com questions 199518 how to programatically add mapped network passwords winxp我希望有人可以帮助解决这个
  • Bash 的源命令无法处理从互联网上卷曲的文件

    我正在尝试使用curl从互联网获取脚本文件 如下所示 source lt curl url echo done 我看到的是 完成 得到了回响before卷曲甚至开始下载文件 这是实际的命令和输出 bash 3 2 source lt cur
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 通过 JavaScript 单击按钮/页面提交

    我想了解 asp net 框架如何知道何时单击了按钮 因此一旦收到请求 就会在服务器上触发其单击事件 我需要了解它是如何工作的 因为我想从 JavaScript 触发按钮的服务器单击事件 我能够从 JavaScript 执行页面提交 doc
  • Angular 4 Http POST 不起作用

    我希望每个人都做得很好 我最近开始使用 Angular 4 4 我一直在尝试将数据发布到我的 api 服务器 但不幸的是它不起作用 我花了大约两天的时间 但仍然没有成功 甚至已经尝试过 6 7 篇文章角 io https angular i
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • ES6 模块范围

    我有代码 lib js var a a export var b b main js console log a a variable is not available in a global scope import b from lib
  • Angular JS - 使服务可以从控制器和视图全局访问

    假设我们有以下服务 myApp factory FooService function 然后 从控制器中 我会说 myApp controller FooCtrl scope FooService function scope FooSer
  • 为什么 call 比 apply 快那么多?

    我想知道是否有人知道why call比apply 在 Chrome 中 速度大约快 4 倍 在 Firefox 中快 30 倍 我什至可以制作自定义原型 apply2 在大多数情况下 运行速度是apply 这个想法取自角度 Function
  • 在反应中访问回调内的 event.target

    我有以下课程片段 constructor props super props this timeout null search e gt clearTimeout this timeout this timeout setTimeout f
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on
  • 将 html 文本框的值分配给 div 的标题

    line 1
  • 为什么我在 Firefox 中突然遇到“阻止加载混合活动内容”问题?

    今天早上 在将我的 Firefox 浏览器升级到最新版本 从 22 到 23 后 我的后台 网站 的一些关键功能停止工作 查看Firebug日志 报告了以下错误 Blocked loading mixed active content ht
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • countplot() 与频率

    我有一个 Pandas DataFrame 其中有一列名为 AXLES 它可以采用 3 12 之间的整数值 我正在尝试使用 Seaborn 的 countplot 选项来实现以下绘图 左 y 轴显示这些值在数据中出现的频率 轴延伸范围为 0
  • XML 中的 PHP 代码?

    是否可以将 PHP 代码放入 XML 文档中以便稍后执行 例如 我可以说
  • Chrome、Firefox 调试器未在 React 应用程序中显示“this”的正确值

    这是 React 组件类中的一些代码 使用 CRA 2 搭建脚手架 click gt console log this hello let x 1 1 This is just here to let chrome put a break
  • 为 sqldatasource 分配参数

    我试图从 SQL Server 获取数据并在表单视图中使用它 但表单视图控件不会从数据源获取任何数据 数据源在页面加载时获取参数 输出只是 这里没有什么可看的 和一个空表 这是数据源和表单视图标签
  • hg忘记和hg删除有什么区别?

    我希望 Mercurial 从存储库的当前状态中删除多个文件 但是 我希望这些文件存在于以前的历史记录中 How do forget and remove不同 他们能做我想要的吗 hg forget 只是 的简写hg remove Af 来
  • Visual Studio 2022:防止解决方案资源管理器中折叠文件夹(2)

    这是对中报告的问题的后续行动这个问题同名 我在 Visual Studio 2022 中遇到同样的问题 对象在几秒钟后或单击另一个对象时崩溃 提供的答案是更改 CodeMaid 中的设置 但我尚未加载 CodeMaid 并且遇到了相同的问题
  • R 中有处理命令行选项的包吗?

    R 中有处理命令行选项的包吗 I know commandArgs 但这太基础了 其结果基本上相当于argc and argv in C 但除此之外我还需要一些东西 就像boost program options in C or GetOp
  • 如何将外部文件中的 Fortran 代码插入到单独的代码中?

    我想让我的代码获取在另一个文档中编写的代码 阅读它 然后像在代码中编写一样使用它 假设我们有以下内容 MODULE samplemod CONTAINS FUNCTION sillysum boudary function RESULT c
  • 使用 Trigger.IO/PhoneGap 在 UIWebView 中通过 focus() 事件自动显示键盘

    据推测 自 iOS 6 以来 这是不可能的 您可以在 iOS 6 中设置 UIWebView 的 KeyboardDisplayRequiresUserAction NO 我正在使用 html 5 webview Trigger IO 并构
  • 为什么 foreach 循环不适用于 JSON 数组

    当我尝试的时候解析 json 数组 工作室给了我一个编译错误 指出foreach 不适用于 json 数组 虽然我知道如何获取所有对象并解析 我只是想知道为什么foreach不适用即使 json 数组是一个数组 对于每个循环的工作方式如下
  • 如何在大型排序数组中高效地找到最接近另一个值 X 的值

    对于已排序的列表 如何找到接近给定数字的最小数字 例如 mysortedList 37 72 235 645 715 767 847 905 908 960 如何找到小于或等于700的最大元素quickly 如果我有1000万个元素 那么线
  • 如何在 Laravel 中显示 GIF

    我正在使用 Firefox 浏览器 尝试了所有PNG s JPG一切都在工作 除了GIF 事情是这样的 如果我测试一下http localhost pepsi gif GIF实际上正在工作并显示 但当我在里面尝试时HTML 图片标签它不显示
  • 匹配两个不同标记之间的任意字符串

    我正在尝试匹配两个不同标记之间的字符串的一部分 它们可能是字符串中多次出现的标记 示例文本 标记为斜体 要匹配的文本为粗体 This is 开始比赛 示例文本 结束比赛 和一些 开始比赛 代币和普通 结束比赛 text 我有以下正则表达式
  • 有人玩过NIO管道来过滤/拦截System.out吗?

    按照建议here我想在选择器循环内执行此操作 我真正想要的是在选择器循环内读取写入系统的内容 EDIT1 我编写了一个完整的解决方案 只是为了发现您无法使用 System setOut 重定向 GC 日志 它只是直接转到 FD 或其他东西
  • 使用 geom_bar 彼此相邻的两个条

    我有以下数据框 df decades marxftext durkftext 1 1970 1979 3009 393 2 1980 1989 3468 469 3 1990 1999 3420 657 4 2000 2009 3162 7
  • 流体宽度元素的等高行

    我用过克里斯 科伊尔斯行中的等高块之前多次使用过 jQuery 脚本 而且效果总是很好 话虽这么说 我总是开发针对特定分辨率构建的网站 这次我正在开发一个响应式网站 主容器具有流体宽度 因此 我遇到了问题 但找不到解决问题的方法 克里斯在他
  • As.vector 不会将 data.frame 子集转换为向量

    下面我提供了我一直在研究的一些代码片段 我已经成功地将字符串作为表格读取 我的表中存在一些子集 我希望在其上使用中值 函数 根据我所做的研究和我自己的经验 median 没有为 data frame 或 data frame 的子集定义行为
  • C# 的鼠标钩子

    我正在尝试模拟 硬件 鼠标点击 因为某些软件似乎会阻止来自 PostMessage 的输入 我知道有 SendInput 但这不是一个选项 因为我也需要它在后台窗口中兼容 解决方案似乎是一个低级鼠标钩子 但我四处搜索 除了记录器之外找不到任
  • 满足特定要求的密码正则表达式

    我要编写一个正则表达式来满足以下要求 至少一个字符 至少一位数字 长度必须为 8 至少一个特殊字符 可以是任意特殊字符 前三个很简单 但找不到一种方法来限制至少特殊字符 任何可能的特殊字符 例如 gt etc 您可以通过组合前瞻来解决这些问
  • JavaScript 的客户端 DOM 打开重定向

    我在扫描以下代码时遇到客户端 DOM 打开重定向安全问题 问题出现在我初始化变量 myPath 和 myHost 的位置 我无法理解它如何受到网络钓鱼攻击以及如何修复它 有人可以帮忙吗 var query this value var my