Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中保护location.href不受跨站点脚本攻击?_Javascript_Cross Site_Location Href_Fortify - Fatal编程技术网

如何在javascript中保护location.href不受跨站点脚本攻击?

如何在javascript中保护location.href不受跨站点脚本攻击?,javascript,cross-site,location-href,fortify,Javascript,Cross Site,Location Href,Fortify,在我的javascript函数中,我使用location.href,如下所示 location.href=“../Floder1/result.jsp”它工作正常,但当我使用fortify工具时,它会显示跨站点脚本,这会导致浏览器执行恶意代码。如何防止跨站点脚本。非常感谢,非常感谢您的回答。当用户可以将数据放入网页或获取会话数据(例如)时,会出现这种情况 如何保护 您绝不允许在网页中插入代码。因此,如果您有一个表单,请在服务器中检查它,并在打印到页面之前对其进行解析 您不应该允许页面内容被hre

在我的javascript函数中,我使用location.href,如下所示
location.href=“../Floder1/result.jsp”它工作正常,但当我使用fortify工具时,它会显示跨站点脚本
,这会导致浏览器执行恶意代码。
如何防止跨站点脚本。非常感谢,非常感谢您的回答。

当用户可以将数据放入网页或获取会话数据(例如)时,会出现这种情况

如何保护

绝不允许在网页中插入代码。因此,如果您有一个表单,请在服务器中检查它,并在打印到页面之前对其进行解析

您不应该允许页面内容被
href
更改。您总是
escape
将数据放在前面

阅读关于
位置的回答。href

样本

您有一个iframe,其中使用GET变量更改了哪些内容:

sample.tld/index.jsp?iframe=none.jsp
我可以在iframe中插入
脚本
,因此您应该使用转义字符对其进行保护:

// Escape the characters in the server and send it to the client.
// So the variable GET iframe will be valid

这段代码应该只在firefox中使用,因为代理并不是在所有浏览器中都实现的

您可以做的是将原始的
位置
对象替换为代理对象,在代理中添加一些逻辑以检查位置的允许值。这不会防止直接修改原始对象(
位置
),但如果在代码中仅使用代理对象,则应该可以

// suppose we are in example.com
let validator = {
   set: function(obj, prop, val) {
     if (prop === 'href') {
       if(typeof val != 'string'){
         throw new TypeError('href must be string.');
       }
       if (!val.startsWith("https://example.com/")) {
         throw new Error('XSS');
       }
     }
    obj[prop] = val;
    return true;
   },
   get: function(obj, prop){
    return prop in obj?
        obj[prop] :
        null;
   }
};
let proxiedLocation = new Proxy(location, validator);
console.log(proxiedLocation.href);// work same as location.href
proxiedLocation.href = "https://example.com/page1";// work fine
proxiedLocation.href = "https://example.net/page1";// cause exception

您正在设置location.href的字符串来自何处?将值赋给location.href是错误的方法?如果是,请指导我。@Gabs00,flag不起任何作用,只是为了识别/验证我保留的flag@kinakuta,字符串来自cookies,我想。你能提供更多关于你到底想要实现什么的信息吗?问题,以及您选择此解决方案的原因,我应该如何为我的当前情况(问题)编写条件以保护Snake,我的代码中没有使用任何iframe,只是我的js函数location.href=“../Floder1/result.jsp”中有这种代码的和平;问题是什么?这些
location.href
重定向到另一个页面。这不是一个漏洞。如果强化工具说这些线是XSS漏洞,那就错了。如果它解决了您的问题,请标记:)。否则告诉我你想做什么。当做