所以,基本上,我的python程序是一个客户端,它在启动时连接到数据库以获得一个令牌来继续工作。
现在我的身份验证方法对我来说看起来完全蹩脚,我不满意:
async def create_db_connection():
while True:
try:
conn = await asyncpg.connect(
user=C.get_credentials(A.Decrypt(user), "vosPgMa"),
password=C.get_credentials(A.Decrypt(password), "vosPgMa"),
host=C.get_credentials(A.Decrypt(host), "vosPgMa"),
port=C.get_credentials(A.Decrypt(port), "vosPgMa"),
database=C.get_credentials(A.Decrypt(database), "vosPgMa")
)
return conn
except Exception as e:
logging.error(f"\n\tError connecting to the database: {e}")
await asyncio.sleep(0.7)
# Update last time active
async def log_off_database(token):
while True:
try:
conn = await B.create_db_connection()
await conn.execute(
'UPDATE "Tokens" SET "Status" = $1, "UsedBy" = $2 WHERE "Token" = $3',
'Free', '-', token
)
except Exception as e:
logging.error(f"Error logging off: {e}")
finally:
await B.close_db_connection(conn)
await asyncio.sleep(9)
我应该如何实现auth过程这样:
- 我的证件没有存储在任何文件存储器里。(包括.env)
1条答案
按热度按时间g2ieeal71#
在客户端创建一个数据库可能是一个问题,特别是当你需要运行这样的查询时。根据您正在构建的程序类型,它可能会使您的数据库暴露于SQL注入或类似的攻击。
我建议你构建一个API或任何其他类型的接口,在服务器端运行这些连接和查询,只将结果返回给客户端。
使用Python,你有一些库已经为你做了部分安全工作,比如Fast API和Flask。
阅读更多信息:
Fast API - Security
How to secure a REST Api on flask