【发布时间】:2021-08-11 07:20:39
【问题描述】:
我有一个网站接受在POST 请求中作为multipart/form-data 发送的文件上传。为了验证之后显示文件名的上传是否受到 XSS 的保护,我想上传一个文件名中包含 HTML 标签的文件。
这实际上比我预期的要难。我无法在我的文件系统 (Windows) 上创建包含 < 的文件。此外,我不知道在上传之前更改 DOM 中文件输入元素的文件名的方法(这是我对普通/隐藏输入所做的)。所以我想在上传之前编辑POST 正文,但我不知道怎么做。流行的扩展(我记得 Tamper Data,Tamper Dev)只让我更改标题。我想这是由于我使用的浏览器 Chrome 的插件系统。
那么,操作POST 请求正文的最简单方法是什么?我可以使用 cUrl 制作整个请求,但我还需要状态、大量附加参数和会话数据等,这会变得相当复杂......浏览器中的简单方法会很好。
【问题讨论】:
-
嗨,您尝试对文件名进行编码吗?
-
@Vinujan.S 抱歉,我不明白。你这是什么意思?
-
对不起,由于文件名不能包含某些字符,您可以在发送请求之前对其进行编码。如果它在浏览器中,您可以在显示时使用
encodeURIComponentdeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/…,您可以解码并显示正确的文件名 -
或者你可以在这个例子中做类似的事情,我们拦截表单提交并且可以像上面那样做。 developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/…
-
有两种方法:
chrome.debuggerAPI 和覆盖page context 中的 XMLHttpRequest。更多信息和示例:Chrome Extension - How to get HTTP Response Body?
标签: forms file-upload google-chrome-extension http-post google-chrome-devtools