首页 > 解决方案 > 过滤 SQL 查询字符串以禁止写入

问题描述

我有一个 Pervasive SQL 12 数据库,我需要从某个应用程序中读取它,但绝不应该写入。我使用一个 PHP PDO 包装函数来处理参数化并设置我经常使用的各种选项。我通过 Windows ODBC 64 位驱动程序连接,使用带有“?”的正确参数化查询 占位符。32 位 ODBC 驱动程序允许只读连接,但 64 位不允许。

我的问题是:有没有办法过滤查询字符串本身以只允许“读取”(SELECT)查询?

在最基本的情况下,我可以使用 PHP 来确保查询以单词“SELECT”开头,并且不包含任何分号(这可能表示中断和第二个查询的开始)。

还有什么我应该寻找的吗?是否可以在 SQL 中执行具有 UPDATE/DELETE/INSERT 作为子查询的 SELECT 查询?或者类似的怪事可以绕过这种类型的过滤器?

我真的不希望有一个积极的恶意用户,就像我试图防止意外/粗心地使用修改查询一样。

标签: sqlsecuritypervasive-sql

解决方案


推荐阅读