Параметры 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, поэтому вы в безопасности там, что касается предоставленных пользователем значений.

Другие вопросы по тегам