gpt4 book ai didi

python - Flask 安全性令人难以置信地减慢了所有 https 流量

转载 作者:行者123 更新时间:2023-11-28 17:06:58 26 4
gpt4 key购买 nike

我正在使用 Flask Security 创建安全的 API。我最近发现使用@auth_token_required 会使我对后端的每个 调用花费大约50 倍 的时间。 HTTPS 调用时间从每个请求 100 毫秒增加到 5 秒以上。将 @auth_token_required 替换为 @login_required 可解决此问题。

我在 Github 上找到了这个帖子:Slow token authentication描述了围绕这个问题的问题和沮丧。

这似乎是有意的安全限制的一部分,但对我来说,将每个请求放慢 50 倍似乎很疯狂。我需要离开 Flask Security 并实现 OAuth 还是社区中的任何人都有一个轻松解决此问题?

如果您遇到此问题以及您决定做什么,请发表评论。

最佳答案

我试过 flask-security,试图让它在各种情况下为我工作。我不需要加速哈希,所以我可能没有直接的答案,所以我可能只会为您指明正确的方向。

编辑 github 中的官方 flask 安全性是 this .我在下面使用的链接指向我的 fork ,它有几个改动,所以如果你需要 fork ,请 fork 官方的

1) Flask-Security 使用 passlib 进行哈希处理

2) 如您共享的链接中所述,Flask-Security 使用 bcrypt,它有意变慢

3) Bcrypt 使用工作因数来确定散列数据所需的时间。在 passlib 中,工作因子由称为 rounds 的 int 变量表示

4 为了散列数据,flask security 在 flask-security/utils.py 中使用了以下函数

def hash_data(data):
return _hashing_context.hash(encode_string(data))

5 验证您的散列数据(例如 token )它在同一个文件中使用此函数

def verify_hash(hashed_data, compare_data):
return _hashing_context.verify(encode_string(compare_data), hashed_data)

6) hashing_context 源自 flask-security/core.py 中的 passlib|像这样在文件的不同地方

from passlib.context import CryptContext

def _get_hashing_context(app):
schemes = cv('HASHING_SCHEMES', app=app)
deprecated = cv('DEPRECATED_HASHING_SCHEMES', app=app)
return CryptContext(
schemes=schemes,
deprecated=deprecated)

hashing_context=_get_hashing_context(app),

最后在 utils.py 中(之前分享过这样的)

_hashing_context = LocalProxy(lambda: _security.hashing_context)

从 passlib 导入并在上面六个中使用的 CryptContext 可以采用另一个参数,它是 4 到 31 之间的整数,默认情况下,它是 12 并且根据 docs将一轮增加双倍花费的时间

由于 Flask 安全性中 CryptContext 没有传递给它的整数值,我假设它使用默认值 12,因此您可以尝试各种数字以查看它的运行情况。有点像

def _get_hashing_context(app):
schemes = cv('HASHING_SCHEMES', app=app)
deprecated = cv('DEPRECATED_HASHING_SCHEMES', app=app)
return CryptContext(
schemes=schemes,
deprecated=deprecated,
pbkdf2_sha256__default_rounds=your_rounds) #I added this line

所以你需要 fork 安全性,将你的回合更改为适合你的数字并像这样安装你的 repo

pip install git+https://github.com/your_repo/flask-security

信息量太大了,希望对大家有用。让我知道进展如何,因为在不久的将来我可能需要它

关于python - Flask 安全性令人难以置信地减慢了所有 https 流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com