asyncpg 中的 fetchval 是否安全地用于 sql 注入?
Is the fetchval in asyncpg safly for sql injections?
asyncpg 中的 fetchval 是否安全地用于 sql 注入?
async def get_user_id_by_bot_id(self, bot_id):
record: Record = await self.pool.fetchval(self.GET_USER_ID_BY_BOT_ID, (bot_id))
print(record)
return record
谢谢您的回答。
是的,asyncpg 使用 PostgreSQL 的语法进行参数替换。只要您使用该功能,通过传递参数并使用 $
后跟参数索引,您应该是安全的!
您不应该像在代码中那样将 args 放在元组中,而是这样做:
record: Record = await self.pool.fetchval(self.GET_USER_ID_BY_BOT_ID, bot_id)
关于如何正确使用参数替换的更多示例:
record = await self.pool.fetchval("SELECT * FROM table WHERE id = ;", my_id)
record = await self.pool.fetchval("UPDATE table SET name = WHERE id = AND username = ;", new_name, my_id, username)
asyncpg 中的 fetchval 是否安全地用于 sql 注入?
async def get_user_id_by_bot_id(self, bot_id):
record: Record = await self.pool.fetchval(self.GET_USER_ID_BY_BOT_ID, (bot_id))
print(record)
return record
谢谢您的回答。
是的,asyncpg 使用 PostgreSQL 的语法进行参数替换。只要您使用该功能,通过传递参数并使用 $
后跟参数索引,您应该是安全的!
您不应该像在代码中那样将 args 放在元组中,而是这样做:
record: Record = await self.pool.fetchval(self.GET_USER_ID_BY_BOT_ID, bot_id)
关于如何正确使用参数替换的更多示例:
record = await self.pool.fetchval("SELECT * FROM table WHERE id = ;", my_id)
record = await self.pool.fetchval("UPDATE table SET name = WHERE id = AND username = ;", new_name, my_id, username)