首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有可用的解决方案来为Google app engine提供xsrf/csrf支持?

有没有可用的解决方案来为Google app engine提供xsrf/csrf支持?
EN

Stack Overflow用户
提问于 2011-12-05 19:39:05
回答 3查看 3.4K关注 0票数 17

现在Cross-site request forgery在网络上已经很常见了。我在部署在Google App engine上的我自己的网站上面对这个问题。我是通过查看访问日志了解到这一点的。是否有任何XSRF/CSRF库或其他适用于App engine的解决方案可供我使用。还有,它会给我的网站增加多少负载?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-17 21:49:16

我使用从basehandler的init请求函数调用的代码

代码语言:javascript
复制
def init_csrf(self):
    """Issue and handle CSRF token as necessary"""

    self.csrf_token = self.request.cookies.get('c')
    if not self.csrf_token:
        self.csrf_token = str(uuid4())[:8]
        self.set_cookie('c', self.csrf_token)
    if self.request.method == 'POST' and self.csrf_protect \
        and self.csrf_token != self.request.get('_csrf_token'):
        raise CsrfException('Missing or invalid CSRF token.')

我取自Facebook's example canvas application包含处理crsf的代码。我几乎没有测试过它,但我将它包含在我的项目中,因为我有一个Facebook的canvas应用程序,它在FB中作为iframe运行。它使每个请求处理程序都有一个实例变量,如果它在正常情况下生成异常,则可以将该变量设置为false。

我还没有对其进行彻底的测试,但这是我掌握的关于python中的Google App Engine的CRSF令牌的资料。如果你想确切了解我最近学习如何使用它的细节,你可以克隆my repository

票数 10
EN

Stack Overflow用户

发布于 2011-12-20 05:52:34

也许你可以试着使用Django's contrib csrf protection middleware。我不确定它在AppEngine中是否可以开箱即用,但值得一试。

票数 6
EN

Stack Overflow用户

发布于 2013-12-05 05:24:36

我做了一个装饰师:

代码语言:javascript
复制
def csrf_protected(handler):
    def inner(self, *args, **kwargs):
        token = self.request.params.get('token')
        if token and self.session.get('csrf') == token:
            self.session['csrf'] = uuid.uuid1().hex
            handler(self, *args, **kwargs)
        else:
            self.abort(400)
    return inner

在模板和会话中包含令牌

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8384729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档