来自机器人的基于ajax的Pinax应用程序的安全性(大众投票,质量等级)?

时间:2017-12-01 09:29:52

标签: django django-apps pinax

似乎有许多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的页面?

1 个答案:

答案 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