【发布时间】:2020-11-11 20:22:00
【问题描述】:
我正在使用 flask-jwt-extended 库进行身份验证,一切正常,但我想检查是否有人使用 ALG = none 发送了经过操纵的 JWT 令牌,因为这是用于欺骗服务器的已知漏洞点。
我查看了文档,但没有找到哪个选项可以让我检查 alg 在所有请求中收到的内容。
谢谢。
【问题讨论】:
标签: flask jwt flask-jwt-extended
我正在使用 flask-jwt-extended 库进行身份验证,一切正常,但我想检查是否有人使用 ALG = none 发送了经过操纵的 JWT 令牌,因为这是用于欺骗服务器的已知漏洞点。
我查看了文档,但没有找到哪个选项可以让我检查 alg 在所有请求中收到的内容。
谢谢。
【问题讨论】:
标签: flask jwt flask-jwt-extended
Flask-JWT-Extended 已经为您处理了这个问题。它会根据app.config['JWT_DECODE_ALGORITHMS'] 或app.config['JWT_ALGORITHM'] 这里 (https://github.com/vimalloc/flask-jwt-extended/blob/1fec4dc22fe97fd3bf579548079543a8c0b61e3e/flask_jwt_extended/utils.py#L111) 中定义的预期算法检查每个令牌,以避免此类攻击。
【讨论】:
none 的东西都将被踢出受jwt 保护的端点(jwt_required、jwt_optional 等)。如果你想记录这个,你需要手动从 headers/cookies/whatver 中获取编码的令牌,并手动将 alg 去掉。可能在@app.before_request。