2

我正在尝试将用户提供的字符串作为 Flask URL 参数传递。 url_for(func_name, param="string with spaces")或类似的生成带有空格的 URL。

如果用户输入带有空格的字符串,则生成的 url 带有空格,它似乎可以工作。

此外,如果我输入一个 URL,%20它似乎会重定向到一个带空格的 url。我认为带有空格的 URL 是个坏主意。

如何让它正常工作(url_for和重定向)?还是我应该接受它?

PS 将用户提供的字符串作为参数传递是否安全?如果不是,我应该如何清理用户输入字符串?

4

1 回答 1

2

不,Flask 生成正确的 URL 编码的 URL;使用现有应用程序进行演示:

>>> with app.test_request_context('/'):
...     print url_for('core.city', city='new york')
... 
/new%20york

另一方面,您的浏览器可能会选择显示此类经过解码的 URL,以便于阅读。

url_for()引号输入是 URL 安全的;编码的 URL 不能包含可以解释为 HTML 的值,因此就用户提供的值而言,您在那里是安全的。

于 2014-02-18T11:17:31.477 回答