如何在Firefox中请求包含../的URL以测试Flask网站的目录遍历防护逻辑?
如何在Firefox中请求包含../的URL以测试Flask网站的目录遍历防护逻辑?
我太懂这种烦恼了——浏览器出于友好自动帮你简化URL,偏偏测试安全逻辑的时候就成了阻碍。下面几个实用方法能帮你绕过Firefox的自动URL规范化,成功发送带../的请求:
方法一:用开发者工具直接新建自定义请求
这是最稳妥的方式,完全避开地址栏的自动解析:
- 按下
F12或Ctrl+Shift+I打开开发者工具,切换到网络面板 - 点击面板左上角的「新建请求」按钮(就是那个带加号的图标)
- 在弹出的请求编辑界面里,直接把目标URL(比如
localhost/foo/../bar)填到URL输入框,选择对应的请求方法(GET/POST等),然后点击「发送」 - 这里要注意:不要先从地址栏跳转再重放请求,一定要直接新建,这样才能保留原始的
../路径
方法二:临时修改Firefox的URL规范化设置
如果你想直接通过地址栏发送请求,可以临时关闭Firefox的路径自动优化:
- 在地址栏输入
about:config,点击「接受风险并继续」进入配置页面 - 在搜索框里找到
network.url.path.normalization,把它的默认值true改成false - 现在你在地址栏输入
localhost/foo/../bar,Firefox就不会自动把它转换成localhost/bar了 - 划重点:测试完成后一定要把这个设置改回
true!不然日常浏览时,某些依赖路径规范化的网站可能会出现加载异常
额外提醒
另外要注意,Flask框架本身在处理请求时也会自动规范化路径。所以即使你成功发送了带../的请求,也要确认你的防护逻辑是在Flask解析路径之前生效的——比如可以通过自定义WSGI中间件来拦截原始的请求路径,而不是依赖Flask路由处理后的路径来做校验。
备注:内容来源于stack exchange,提问作者Dragon
相关产品推荐
相关产品推荐

