如何在 Python 中清理 url 字符串?

klv*_*sov 4 python url sanitize

我有一个 python 应用程序,可以使用 URL 列表并生成 bash 脚本作为输出。

如何清理 URL,以便恶意用户无法注入将在我的基础设施上执行的 bash 命令。

例如:

http://www.circl.lu/a.php?rm -Rf /etc
Run Code Online (Sandbox Code Playgroud)

sch*_*lli 6

我想urllib这是一个解析 url 的选项,以便转义有害字符。至少对于您的用例来说,它看起来是一个很好的资源。请参阅url-quoting的文档。

from urllib.parse import quote

quote('touch foo', safe='/')
quote('rm -Rf /etc', safe='/')
quote('http://www.circl.lu/a.php?rm -Rf /etc', safe='/:?&')

#'touch%20foo'
#'rm%20-Rf%20/etc'
#'http://www.circl.lu/a.php?rm%20-Rf%20/etc'
Run Code Online (Sandbox Code Playgroud)