csrf.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:Adventure-Insecure 作者: colinnewell 项目源码 文件源码
def generate_csrf(secret_key=None, time_limit=None, token_key=None):
    """Generate csrf token code.

    :param secret_key: A secret key for mixing in the token,
                       default is Flask.secret_key.
    :param time_limit: Token valid in the time limit,
                       default is 3600s.
    """
    if not secret_key:
        secret_key = current_app.config.get(
            'WTF_CSRF_SECRET_KEY', current_app.secret_key
        )

    if not secret_key:
        raise Exception('Must provide secret_key to use csrf.')

    if time_limit is None:
        time_limit = current_app.config.get('WTF_CSRF_TIME_LIMIT', 3600)

    if time_limit:
        expires = int(time.time() + time_limit)
        csrf_build = '%s:%s' % (expires, random.getrandbits(32))
    else:
        expires = ''
        csrf_build = '%s:%s' % (expires, random.getrandbits(32))

    hmac_csrf = hmac.new(
        to_bytes(secret_key),
        to_bytes(session.sid + csrf_build),
        digestmod=hashlib.sha1
    ).hexdigest()
    return '%s##%s' % (csrf_build, hmac_csrf)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号