【问题标题】:How exactly mysql_connect would be vulnerable after removing support取消支持后 mysql_connect 究竟如何易受攻击
【发布时间】:2013-05-03 08:23:49
【问题描述】:

官网建议使用mysqli或dbo作为对mysql_connect的支持将被删除。但是什么结果是原因呢?已经在 mysql_connect 中编码的所有网页呢?它会使网站更容易受到攻击吗?

【问题讨论】:

    标签: mysqli dbo


    【解决方案1】:

    除非您升级到删除了这些功能的版本,否则应该不会有任何影响。当前版本 5.5.9 已默认禁用 mysql,但仍可以启用。这并不意味着您不能升级,如果您愿意,您仍然可以使用我使用 PDO 创建的这个包装器作为后端,它也可以正常工作(查看自述文件了解更多信息):

    在 phpclasses.org 上: http://www.phpclasses.org/package/8221-PHP-Access-MySQL-databases-using-PDO-wrapper-functions.html

    在github上: https://github.com/AzizSaleh/mysql

    mysql 扩展并没有因为“心血来潮”而被弃用,而是因为缺乏对许多标准功能的支持,例如:

    • 存储过程(无法处理多个结果集)
    • 准备好的声明
    • 加密 (SSL)
    • 压缩
    • 完整的字符集支持
    • 安全性

    出于这些原因,如果您的代码库很小或开始一个新项目,我建议您改用 PDO 或 MySQLI。

    【讨论】:

    • 如果我错了,请纠正我。你写了一个类,其中的方法是以mysql ext 对应的名字命名的?
    • 啊,还有映射的函数。但是由于某种原因,您需要 $link 变量。它使整个想法无法使用。不知道为什么你不使用默认连接将其设为可选。
    • @YourCommonSense 常识:你的第一个问题,是的,它们被映射到产生与 mysql_* 函数相同结果的 PDO 功能。很好地抓住了需要的 $link,我完全错过了那部分,因为该文件未包含在我的单元测试中。我已经更新了它,所以它不是必需的,在实际对象中它不是必需的,所以我只更新了函数映射。如果未指定链接标识符,则假定 mysql_connect() 打开的最后一个链接在 mysql_* 文档中指定。
    【解决方案2】:

    它实际上并不支持,但功能本身将被删除(在遥远的将来)。

    所以,所有已经在 mysql_connect 中编码的网页都将停止工作。不过,我不会说这会使网站更容易受到攻击。

    然而,要满足这样的条件,你需要两件事

    • 实际上已经从 PHP 中删除了 mysql_connect(甚至还没有提议)
    • 在您的服务器上安装了这样的 PHP 版本。

    这实际上至少需要 5-6 年才能发生

    【讨论】:

    • @user2207792: mysql* 函数已经易受攻击。关键是要确保新代码不使用它们。
    • @user2207792 这显然不是真的。 mysql 函数中没有任何漏洞。
    猜你喜欢
    • 2018-11-17
    • 2016-04-18
    • 2018-01-19
    • 2015-10-03
    • 2019-08-10
    • 2016-12-17
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多