【发布时间】:2011-12-07 20:04:28
【问题描述】:
我试图找出一个字符串是否包含某些通过以下方式改变数据库的 SQL 命令:
- 创建新表
- 删除现有表
- 创建新的表列
- 删除现有表列
现在我正在 strpos 搜索 ALTER、CREATE 和 DROP,应该可以。
是否还有其他命令可以执行上述操作并且我应该将其包含在我的搜索中?
请注意,出于安全原因,我不需要这个。我只需要知道表架构是否更改,这样我就可以更新架构信息的本地缓存...
【问题讨论】:
-
更好的方法是不允许用户执行此类操作,只有管理员才能创建或更改或删除表,并且任何用户都不应拥有权限。
-
srsly 为什么要 +1 上面的评论?我刚刚写道,这不是出于安全原因:)
-
我们怎么知道这不是一个管理界面?很多软件都有一个管理界面,允许人们更改表格。通常这些是用户定义的表,核心应用表是不允许的,但这是合法的设计。
-
您的应用程序本身是否旨在允许用户修改架构?他们是通过一些 UI 来做到这一点,还是用户可以实际输入他们希望运行的 SQL?
-
@david:你说得对:(我想我会每天让缓存过期一次或其他什么......