来自机器人的基于 ajax 的 Pinax 应用程序的安全性如何(大众投票、大众评级)?

How secure are ajax based Pinax apps from bots (Mass voting, Mass rating)?

似乎有许多与 ajax 配合使用的 pinax 应用程序使用该 pinax 应用程序的特定 url 模式。

例如评级应用程序。它使用 ajax.

通常您会 ajax 到产品所在的页面。您需要从那里获取 CSRF 令牌。因此,用户或机器人实际上需要访问该页面才能对产品进行评分。

所以所有的安全混入都可以工作。

但是 pinax 使用 url 就像 site.com/ratings。这个评级表从哪里得到 CSRF?如果它只能从产品页面获取它是安全的,因为我们可以在页面上应用安全措施。

如果 CSRF 是从 sites.com/ratings 获得的,那么机器人可以轻松绕过产品页面上的所有安全混合并直接对产品进行大规模赞成或反对或评价产品。

它是否从 site.com/ratings 或嵌入小部件的产品或视图页面获取 CSRF。

喜欢和类似的应用程序也是如此。

长话短说:

1) 有人可以创建一个机器人来对 pinax 应用程序进行质量评分或投票吗?绕过作为产品页面的混入的所有安全措施?

2) template tag 中是否采取了任何安全措施,以便评级 ajax 仅在嵌入 template tag 的页面中有效?

理想情况下,站点开发人员使用中间件来保护他们的所有视图。

例如,我们所有的入门项目都开启了 CsrfViewMiddleware

https://github.com/pinax/pinax-starter-projects/blob/account/project_name/settings.py#L111

因此,您需要将 CSRF 令牌与您的 ajax 请求一起传递,以便 Pinax ajax 视图中的视图的 post 处理程序能够正常工作。为此,您应该包括以下内容:

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.