首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >金字塔: CSRF正在被检查,但我找不到它

金字塔: CSRF正在被检查,但我找不到它
EN

Stack Overflow用户
提问于 2014-08-17 10:33:35
回答 1查看 412关注 0票数 1

我正在尝试解决我收到的这个403错误:

代码语言:javascript
复制
403 Forbidden

Access was denied to this resource.

CSRF token is missing or invalid

我已经将我的函数简化为裸机:

代码语言:javascript
复制
@view_config(permission='public', route_name='passwordrecovery', renderer='templates/password-recovery.pt')
def password_recovery(request):
    print('****************************************here')

    if 'email' in request.POST:
        print('****************************************here2')
        print(request.POST.csrf_token)
    else:
        logged_in = authenticated_userid(request)
        form = render('templates/password-recovery.pt', {'logged_in': logged_in}, request)

        return {
            'logged_in': logged_in,
            'form': form,
        }

和表单:

代码语言:javascript
复制
<div id="login_form" xmlns="http://www.w3.org/1999/xhtml">
    <form id="passwordrecovery" action="/password-recovery" method="post">
    <h2>Log In</h2>
    <fieldset>
        <input name="csrf_token" type="hidden"
            value="89418871070a0bed0e715ce79f4f2d3a0a149657">
        <label for="email">Email:</label>
        <input type="text" name="email" />
        <br />
        []
        <input type="submit" class="login" name="submit" value="Reset" />
    </fieldset>
    </form>
</div>

如你所见,我在里面有一些调试指纹。让我抓狂的是,当我加载表单时,我在控制台上得到“*。我没有看到另一个‘*。

我目前在任何地方都没有任何CSRF检查代码,所以我不能理解它在哪里被检查。金字塔有没有我不知道的自动CSRF检查器?

/EDIT我发现这个错误只有在标记名为‘csrf_/EDIT’时才会发生。叫它其他任何东西,一切都会像预期的那样工作。

EN

回答 1

Stack Overflow用户

发布于 2014-08-17 11:48:22

不管怎么说,我让它工作了,但我不知道为什么。

如果我将令牌的名称更改为'_csrf‘而不是'csrf_ token ',那么它将停止执行自动检查。

我怀疑自动检查来自于金字塔1.5中的一个新功能:csrf checking with view predicates

我还发现,如果我把'csrf_check=False‘放到我的装饰器中,它就会起作用。奇怪的是,csrf_check的任何其他值都抛出了谓词不匹配错误。

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

https://stackoverflow.com/questions/25345834

复制
相关文章

相似问题

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