如何使用 Firefox 请求其中包含“..”的 URL?

如何使用 Firefox 请求其中包含“..”的 URL?

我正在用 Flask 建立一个个人网站。为了测试它,我想请求localhost/foo/../bar。但是,当我导航到此 URL 时,Firefox 会自动重写它并localhost/bar改为请求。即使我使用网络工具编辑和重放请求,也会发生这种情况。

我的代码应该专门拒绝包括 的路径..,因为它们可能导致目录遍历攻击。但是,我需要通过发送此类“不良”请求来测试我的代码。

如何/../使用 Firefox 请求带有片段的 URL?

答案1

建立在Giacomo1968 的回答,您可以使用 curl 来执行此操作。但是,您需要添加--path-as-is以防止它解析/../s。

curl -ILk --path-as-is localhost/foo/../bar

请参阅 Giacomo1968 的回答以获取更多有用信息。

答案2

不要依赖 GUI 网络浏览器来调试服务器行为。

GUI 网络浏览器经过优化,可以显示内容并缓存内容以便快速检索;不一定调试基于网络服务器的基本行为。

好吧,Firefox 是一个 GUI(又名:人性化)浏览器,如果你想测试它,最好只使用终端中的 Curl 进行标头请求,以测试应用程序的行为方式。运行此 Curl 命令并查看标头输出:

curl -ILk http://localhost/foo/../bar

此外,虽然我认为在应用程序中加强 URL 访问以防止目录遍历是件好事,但这些内容通常由反向代理整个应用程序的 Web 服务器来处理。

查看这篇博文:它解释了merge_slashesNginx(Python 和 Ruby 应用程序最常用的 Web 服务器)的工作原理,以便更好地理解,在您不知情的情况下,Nginx 默认意味着merge_slashes on完全无法进行任何目录遍历。

相关内容