我正在考虑在我的下一个 PHP 项目中使用 Justin Vincent 的ezSQL,我注意到它在后台使用mysql_connect
。我知道不建议再使用mysql_*
PHP 中的函数了。我已经看到相当多的网站通过如下代码受到 SQL 注入攻击:
<?php mysql_qyery("SELECT * FROM my_table WHERE id = " . $_GET['id']); ?>
我知道 PDO 支持prepared statements,但您不必被迫准备您的语句,因此您仍然可以编写类似的不安全查询。
我想知道如果我使用像exSQL这样在执行查询之前处理转义数据mysql_*
的库,我应该注意的函数是否存在任何内在的安全漏洞?
编辑:我不是在问我是否应该使用 PDO/mysqli 而不是 mysql 扩展,或者在未来的 PHP 版本中是否会删除 mysql 扩展。这两个问题的答案都可以在 PHP 手册和其他地方找到。但是,对于不鼓励使用 mysql 扩展的原因,缺乏现成的文档。显而易见,PHP 手册对以下问题的回答是:“为什么不鼓励使用我使用了 10 多年的 MySQL 扩展 (ext/mysql)?它是否已被弃用?我改用什么?我该如何迁移?” 实际上并没有回答为什么不鼓励它。
对于使用仍然依赖旧 mysql 扩展的库的开发人员来说,这是一个问题。仅仅因为不再支持该扩展并不意味着这是一个“无关紧要”的问题,因为仍然有很多库使用旧扩展。