首页 > 其他分享 >Fotify扫描结果Open Redirection解决方案

Fotify扫描结果Open Redirection解决方案

时间:2024-08-12 21:16:52浏览次数:7  
标签:return url URL Fotify Redirection href let params Open

  URL任意跳转漏洞,又叫开放重定向漏洞,是一种常见的安全漏洞。当访问时用widow.href或者window.localtion指定跳转地址时,会报此漏洞。

  网上的解决方案大致分为两种。

  方法一:种是对跳转URL进行加密,使用方法

        function validateURL(surl) {  
            var url = parseURL(surl);  
            var urlHostname = url.hostname.trim();  
  
            if (urlHostname == '') {  
                return true;  
            }  
            else {  
                if (urlHostname.toUpperCase() == location.hostname.trim().toUpperCase()) {  
                    return true;  
                }  
                else  
                    return false;  
            }  
        }  
  
        function parseURL(url) {  
            var a = document.createElement('a');  
            a.href = url;  
            return {  
                source: url,  
                protocol: a.protocol.replace(':', ''),  
                hostname: a.hostname,  
                host: a.host,  
                port: a.port,  
                query: a.search,  
                params: (function () {  
                    var ret = {},  
                        seg = a.search.replace(/^\?/, '').split('&'),  
                        len = seg.length, i = 0, s;  
                    for (; i < len; i++) {  
                        if (!seg[i]) { continue; }  
                        s = seg[i].split('=');  
                        ret[s[0]] = s[1];  
                    }  
                    return ret;  
                })(),  
                file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],  
                hash: a.hash.replace('#', ''),  
                path: a.pathname.replace(/^([^\/])/, '/$1'),  
                relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],  
                segments: a.pathname.replace(/^\//, '').split('/')  
            };  
        } 

 

  此方法参考链接https://www.c-sharpcorner.com/article/preventing-open-redirection-attacks-in-c-sharp-and-javascript/

  方法二:修改方案为模拟a标签点击跳转,同时也需要对URL进行加密处理可生效。

function createAElement(url) {
    let a = document.createElement('a')//建立一个a标签
    let urlObj = new URL(url, window.location.href);
    let href = (encodeUrlParams(urlObj));
    a.setAttribute("href", href);
    a.setAttribute('target', "_self")//设置target属性,_blank打开新标签,_self在本标签打开// 模拟点击事件
    a.click();
    document.body.appendChild(a);
    a.remove();
}
function encodeUrlParams(url) {
    // 解析 URL
    let urlObj = new URL(url);
    // 获取查询参数
    let params = new URLSearchParams(urlObj.search);
    // 遍历查询参数
    for (let [key, value] of params.entries()) {
        params.delete(key);
        params.set(encodeURIComponent(key), encodeURIComponent(value));
    }
    // 更新 URL 的查询部分
    urlObj.search = params.toString();
    // 返回更新后的 URL
    return urlObj.href;
}

  使用方法二的处理方案,成功解决了fotify扫描的问题。

 

 

标签:return,url,URL,Fotify,Redirection,href,let,params,Open
From: https://www.cnblogs.com/ladyM/p/18355758

相关文章

  • 【转载】为什么OpenAI下一步是Agent? 关于Agent你需要知道的一切
    单Agent不就是生物学中的细胞吗?多Agent不就是一个物种部落吗?单Agent不就是生物学中的细胞吗?多Agent不就是一个物种部落吗?大家好。我是甘润泽,毕业于硕士新加坡国立大学(NUS),深度学习方向,现在是AIAgent开发者、全栈工程师。很高兴在AI新智能的俱乐部内给大家做这次分享。我......
  • OpenCv学习-python
    一.OpenCv介绍简介OpenCV(OpenSourceComputerVisionLibrary:opencv官网地址)是一个开源的基于BSD许可的库,它包括数百种计算机视觉算法。文档OpenCV2.xAPI描述的是C++API,相对还有一个基于C语言的OpenCV1.xAPI,后者的描述在文档opencv1.x.pdf中。OpenCV具有模块化结......
  • 中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-UART串口
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 测试1,配置串口0为115200波......
  • 《纸嫁衣7》玩家必看:解决opengl32.dll缺失,畅享“卿不负”之旅
    对于热爱《纸嫁衣7》的玩家们来说,遇到游戏运行时提示“缺失opengl32.dll”的问题无疑是一大困扰。这个看似技术性的难题,实则可能影响到你深入体验这款充满惊悚与浪漫元素的游戏——“卿不负”。不过,别担心,我们为你准备了一份详尽的解决指南,帮助你轻松解决这一难题,重新踏上与心......
  • XXI Open Cup, Grand Prix of Tokyo
    Preface神秘沟槽Counting大赛,十个题全是模\(998244353\)有点逆天了开场发现G是去年暑假前集训的原,然后坐牢了大半天看榜发现包大爷切了B,然后跟了一手接下来慢慢把所有题都看了一遍,每个题都属于有点思路但不多中间和祁神把诈骗题I玩出来了,然后对着H硬套「PKUWC2018......
  • vmware安装OpenEuler系统
    第一步下载OpenEuler系统镜像包官网下载地址,服务器版3.9G最小化安装镜像包https://www.openeuler.org/zh/download/?version=openEuler%2024.03%20LTS镜像下载完成开始安装第二步创建虚拟机运行OpenEuler镜像 默认 默认  磁盘  cpu 内存   ......
  • opencv学习笔记(一)
    前言本文为本人观看b站视频学习opencv的笔记分享,如有错误欢迎指正,如有侵权联系我删除,视频链接一、ReadImagesVideosandWebcams#include<opencv2/imgcodecs.hpp>#include<opencv2/highgui.hpp>#include<opencv2/imgproc.hpp>#include<iostream>usingnamespaces......
  • OpenCV学习过程(6)
    目录1.模板匹配方法:(一般建议使用归一化的后三种方法) 代码演示:2.傅里叶变换代码演示过程:显示幅度谱:低通滤波处理后的图像:高通滤波处理后的图像:1.模板匹配模板匹配和卷积原理很像,模板在原图像上从原点开始滑动,计算模板与(图像被模板覆盖的地方)的差别程度,这个差别程......
  • 奥特曼花园私照“惊”到AI圈创始人,引出OpenAI代号“草莓”神秘项目进展大讨论,匿名基础
    今天,SamAltman在X上晒了一张自家花园的照片,结果却把AI界的创始人们“惊”到了。图片公司高层突发的巨大变动,似乎并没有太多影响到这位当家人,奥特曼在海外媒体秀出了一张花园花盆中生长的草莓的宜人景色,并用他典型的全小写文字风格配文“我喜欢花园里的夏天”。看起来,既在......
  • OpenCV C++ 霍夫直线变换-Hough Line Transform
    使用OpenCV在C++中实现霍夫直线变换(HoughLineTransform)可以通过以下步骤完成。我们将首先进行边缘检测,然后应用霍夫直线变换来检测图像中的直线。步骤概述读取图像:使用cv::imread读取图像。灰度转换:将图像转换为灰度图。边缘检测:使用Canny边缘检测器。霍夫直线......