我正在运行 PHP 4 并通过 FreeTDS 与 MS SQL2000 数据库通信的旧系统上进行一些维护工作。我知道,听起来已经有些吓人了!
许多代码使用不安全的字符串连接来生成 SQL 查询。我做了一些工作来尝试过滤输入以使事情更安全,但这让我很头疼。
我想知道是否有什么东西可以让我在当前设置的情况下进行正确的参数化查询?此时我无法更改 PHP 或 MSSQL 的版本。
我正在运行 PHP 4 并通过 FreeTDS 与 MS SQL2000 数据库通信的旧系统上进行一些维护工作。我知道,听起来已经有些吓人了!
许多代码使用不安全的字符串连接来生成 SQL 查询。我做了一些工作来尝试过滤输入以使事情更安全,但这让我很头疼。
我想知道是否有什么东西可以让我在当前设置的情况下进行正确的参数化查询?此时我无法更改 PHP 或 MSSQL 的版本。
如果您对参数化查询的主要兴趣是 SQL 注入安全性,我会寻找一个为您提供功能并用纯 PHP 编写的数据库抽象层。我使用了ADOdb,这是一个不错的选择,而且看起来他们仍然有旧的 PHP4 版本可供下载。
对此唯一需要注意的是,抽象层可能无法对您的数据库进行“正确”的参数化查询。换句话说,他们可能已经实现了自己的参数化引擎,然后将完整的 SQL 字符串发送到数据库。这对于 MS SQL Server 很重要,因为“适当的”参数化查询可以带来显着的性能提升。