Параметры URL фляги с пробелами генерируют URL с пробелами
Я пытаюсь передать пользовательскую строку в качестве параметра URL-адреса Flask.url_for(func_name, param="string with spaces")
или аналогичный генерирует URL с пробелами.
Если пользователь вводит строку с пробелами, сгенерированный URL имеет пробелы, это похоже на работу.
Также, если я введу URL с %20
кажется, перенаправить на URL с пробелами. Я думал, что URL с пробелами были плохой идеей.
Как мне заставить его работать правильно (url_for
и перенаправление)? Или я должен просто принять это?
PS Передача пользовательской строки в качестве параметра безопасна? Если нет, то как мне санировать строку ввода пользователя?
1 ответ
Нет, Flask генерирует URL-адреса в правильном URL-адресе; демонстрация с существующим приложением:
>>> with app.test_request_context('/'):
... print url_for('core.city', city='new york')
...
/new%20york
Ваш браузер, с другой стороны, может выбрать отображение таких URL-адресов в декодированном виде для удобства чтения.
url_for()
ввод кавычек должен быть URL-безопасным; закодированные URL-адреса не могут содержать значения, которые могут быть интерпретированы как HTML, поэтому вы в безопасности там, что касается предоставленных пользователем значений.