【问题标题】:Is there any way to Block a sql query in python? [closed]有什么方法可以在 python 中阻止 sql 查询? [关闭]
【发布时间】:2019-09-28 04:38:46
【问题描述】:

我正在制作一个完整的 python 软件,它将用于执行 sql 查询,但我想阻止一些查询,如 DROP DATABASE,以便没有人可以通过我的 python 程序执行它

我希望没有人可以使用此语句来删除事物是 SQL

mycursor.execute(DROP DATABASE 'database name here')
mydb.commit()

sql="DROP DATABASE 'database name here'"
mycursor.execute(sql)
mydb.commit()

#I WANT NO ONE CAN USE THIS QUERY

【问题讨论】:

  • 是的,你自己写逻辑。也许if 'DROP DATABASE' in user_query: break; else: cur.execute(user_query) 或等
  • 这也是一个非常糟糕的主意。不允许用户在您的应用程序中编写任意 SQL 查询。
  • 您可能想看看这个list of SQL injection attacks,这可能会阻止您尝试为此编写自己的逻辑。
  • 如今的数据库主要由受信任的代理使用,例如代表用户以提升的权限运行的 Web 应用程序。但早些时候,它们实际上是为来自具有不同凭据和权限的多个经过身份验证的用户的连接而设计的。也许您想采用那种“旧”风格。

标签: python mysql


【解决方案1】:

如果有的话,这应该通过数据库权限来完成。或者,您可以尝试解析 SQL 并确定是否允许查询。

但是,这似乎是个坏主意。不受信任的输入几乎肯定不应作为数据库查询传递。

【讨论】:

  • 1+ 用于指出数据库权限 - 这是非常重要的一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 2021-10-24
相关资源
最近更新 更多