django - 将 CSRF 凭据作为 url 参数传递?

标签 django iframe security csrf

如何处理作为 url 参数发送到 django 的 csrf 凭据?

我问是因为,显然,the only way to submit a file upload via a form in an iFrame .

大多数在线示例显示将 csrf 凭据作为 header 传递,

xhr.setRequestHeader("X-CSRFToken", csrfToken );

但这不是 ie/opera 中 iFrame 传输的选项。

我可以使用csrf_exempt ,但这使我的网站容易受到攻击。

最佳答案

您可以创建一些中间件,从 GET 参数中获取 csrf_token 并将其放在请求上,然后 CsrfViewMiddleware 尝试验证

class CsrfGetParamMiddleware(object):
    def process_request(self, request):
        request.META['HTTP_X_CSRFTOKEN'] = request.GET.get('csrf_token')
        return None

将此中间件放置在CsrfViewMiddleware之上

MIDDLEWARE_CLASSES = (
    'CsrfGetParamMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
)

这使您无需自行验证或子类化CsrfViewMiddleware

关于django - 将 CSRF 凭据作为 url 参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16339819/

相关文章:

javascript - 多次调用iframe加载回调

java - 我怎样才能 "migrate to the Java 2 security model instead"?

security - 如果我允许用​​户添加 CSS,是否存在安全威胁?

python - 没有名为 psycopg2 的模块

django - 子模型更新 Django 外键关系中的父模型

python - 如何通过 form.instance 属性过滤自动完成查询集?

java - 避免在 Spring 中创建 session

python - Django - 属性错误: 'tuple' object has no attribute 'name'

php - 如何检查 URL 是否可嵌入 PHP 中的 iframe?

javascript - 是否可以防止使用js将iframe内容转义到主页?