1

我正在构建一个使用 Django 作为后端的 Flash 游戏。

我目前使用 django-tastypie 设置了一个 api 端点,flash 应用程序可以调用它来接收 JSON 数据以填充应用程序。

我了解使用简单的 django 视图和模板系统,可以在中间件的帮助下简单地在网页中包含一个 csrf_token。

我现在的问题是尝试在不使用 csrf_exempt 的情况下将数据发布回服务器,理想情况下,可以在不插入 params 标签的情况下运行 flash 应用程序。希望有一个独立的 swf 文件可以按原样工作。

如何将 csrf_token 放入 flash 应用程序,以便它可以将数据发回服务器而无需担心安全问题?

如果无法使用 csrf_token 方式,还有其他方法可以安全地发布数据吗?

我已经搜索了许多导致类似问题的途径,但许多都没有答案。也许我在这里遗漏了一些东西,因为我全神贯注于自己的观点。我希望有人能启发我更好的方法来做到这一点。

提前致谢。

4

1 回答 1

0

听起来你可能有两个问题:

我如何通过来自 Flash 的 POST 请求实际发送 CSRF 令牌?

Django 还通过 header 接受 CSRF 令牌X-CRSFToken请参阅此处的文档

您可以将标头附加到您的请求中,如下所示:

var req:URLRequest=new URLRequest();
req.url="http://somesite.com";
var header:URLRequestHeader=new URLRequestHeader("X-CSRFToken","foobar");
req.requestHeaders.push(header);

URLRequests 文档在这里


我如何首先将 CSRF 令牌放入我的 Flash 文件中?!

(选项 A)因为 CSRF 令牌是在每个请求的基础上生成的(例如,使用模板化传统 HTML 表单,在 GET 请求上),最简单的做法是通过模板化参数将 CSRF 令牌传递给 Flash 文件。就像是:<param name="csrf_token" value="{{ my_csrf_token }}" />

(选项 B)听起来您不想做参数的事情,所以您的最终选择是构建一个自定义 Django 视图,该视图具有将 CSRFToken 传递到您的 Flash 文件的唯一功能。因此,流程将是您的 Flash 文件加载,您的 Flash 发出一个 GET 请求,http://mysite.com/csrf_token/该请求只返回一个有效的 CSRF 令牌,然后您可以使用该令牌来执行您的 POST。(请注意,您需要为每个 POST 请求执行 GET 请求)。

于 2012-06-15T23:08:41.090 回答