axios发送post里的数据带有XSS攻击的字符串会被拦截?

发布于 2022-09-12 03:24:22 字数 622 浏览 19 评论 0

使用axios发送post请求,请求参数如下:

{
    "body": {
        "name": "test-xss18",
        "description": "<IMG src=javascript:alert('XSS')>",
    }
}

在axios的拦截处进行监听,可以发现请求响应直接走向错误处理,理论上该请求不应该报错(非后台接口错误,因为请求并没有发到后台),走向正常的响应处理。

如果把请求数据中description的值改为其他文本,则请求正常。但业务代码并没有做任何特殊处理,不知道axios源码里是否有特殊处理

只要数据带上了可能存在XSS注入风险的文本就会出现该情况,比如<button>x</button>正常,
<button onclick="javascript:alert()">x</button>报错

线上环境数据未能采集,本地调试时报错内容是504 (Gateway Timeout)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

荒人说梦 2022-09-19 03:24:22

我觉得axios不应该会做这样的处理,你可以对https://www.lilnong.top/cors/1010000023025316这个接口请求一下看看。

axios({
    url: `https://www.lilnong.top/cors/<button onclick="javascript:alert()">x</button>`,
    method: 'post',
    data:{
        a: '<button onclick="javascript:alert()">x</button>'
    }
})    
魔法唧唧 2022-09-19 03:24:22

axios 没做任何处理,这应该是你后端的问题。

axios 相关源码:

// 所在文件 /lib/adapters/xhr.js

module.exports = function xhrAdapter(config) { 
    return new Promise(function dispatchXhrRequest(resolve, reject) { 
        var requestData = config.data;
        var requestHeaders = config.headers;
        
        /* 省略事件监听的相关代码 */
         
        if (requestData === undefined) { 
            requestData = null; 
        } 
        
        request.send(requestData);  // request 是一个 XMLHTTPRequest 对象
    }); 
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文