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 に答える