2009-11-09 43 views
0

在编写代码时,请求带有附加“下一个”查询字符串参数的页面很常见。urlencode所有下一个参数是否方便? - django

例如,在下面的模板代码旁分回给用户的页面:

<a href="{%url some_view%}?next={{request.get_full_path}} 

这里我下面一个约定:如果下一个功能,我没有控制的东西,如用户输入的搜索关键字,我urlencode它。否则我不会。

<a href="{%url some_view%}?next={{request.get_full_path|urlencode}} 

不是为每一个参数判断是否会被用户提供或不提供,这将是方便,如果我URLEncode的所有未来的字符串?会不会有副作用,我目前没有看到?

回答

2

据我所知,网址中的任何东西都应该是urlencoded。

唯一的问题是你需要确保在读取参数时反转编码。 django很可能已经为你做了这件事。我需要查阅文档和/或代码来确认。

+0

+1:只有您可以防止基于伪造请求的攻击,这些请求可以让事情变得很酷,因为太多错误类型的信息都是URL的一部分。如果他们的搜索字符串中包含“&somefield = someValue”,那么您的应用程序将如何运行? – 2009-11-09 16:20:28

+0

不过,在他的问题的上下文中,下一个参数可以根据有效域列表进行检查,或者要求它是相对的。 – 2009-11-09 16:21:51

相关问题