似乎有许多pinax应用程序使用ajax使用特定的urlpattern用于该pinax应用程序。
例如,有评级应用程序。它使用ajax。
通常,您可以使用产品所在的页面。您需要从那里获得CSRF令牌。因此,用户或机器人实际上需要访问该页面以对产品进行评级。
所以所有的安全混合都可以。
然而,pinax使用类似site.com/ratings
的网址。这个评级表从哪里获得CSRF?如果它只能从产品页面获取它是安全的,我们可以在页面上应用安全措施。
如果从sites.com/ratings
机器人获得CSRF,可以轻松绕过产品页面上的所有安全混合,并直接批量投票或下调或评价产品。
是否从site.com/ratings
或嵌入小部件的产品或视图页面获取CSRF。
喜欢和类似的应用也一样。
TL; DR:
1)有人可以创建一个机器人来批量评级或投票给pinax应用程序,比如评级,甚至无需访问产品或帖子或模型视图,只需访问pinax应用程序URL,从而绕过作为mixin的所有安全措施产品页面?
2)template tag
是否采取了任何安全措施,以便评级ajax仅适用于嵌入template tag
的页面?
答案 0 :(得分:1)
理想情况下,网站开发人员使用中间件来保护他们的所有观点。
例如,我们的所有初学者项目都附带了DATEADD(dd, DATEDIFF(dd, 0, the_date ), 0)
:
https://github.com/pinax/pinax-starter-projects/blob/account/project_name/settings.py#L111
因此,您需要使用ajax请求传递CSRF令牌,以便Pinax ajax视图中的CsrfViewMiddleware
视图处理程序能够正常工作。为此,您应该包含以下内容:
https://github.com/pinax/pinax-starter-projects/blob/account/static/src/js/ajax.js
和
https://github.com/pinax/pinax-starter-projects/blob/account/static/src/js/index.js#L14
在你的JS管道中。这基于Django Documentation。