PHP的安全问题一般可以归结为两类
未打补丁的系统
截至目前,Wordpress 统计数据显示,超过一半的用户正在使用已过生命周期终止的PHP 版本(PHP 5.2 - 5.4)运行 PHP。在两周内,PHP 5.5 进入 EOL,然后跃升至所有安装量的 80% 左右。现在,公平地说,一些 Enterprise/LTS Linux 安装将向后移植安全修复程序,但其中绝大多数没有使用向后移植的修复程序(或者有些不修补他们的系统)。更糟糕的是,很多人拒绝升级 PHP 本身。他们要么不能/不会更新他们的代码,要么他们认为旧软件更稳定。
Wordpress(全球使用的#1 PHP 应用程序)齐心协力确保用户及时了解软件本身(并且他们取得了长足的进步),但尽管如此,只有 40% 的用户在运行最新版本的 Wordpress。这意味着大约 60% 可能存在未修补的安全漏洞。这只是基本程序。Wordpress 拥有庞大的插件生态系统,其中许多都有自己的安全漏洞。
然后还有其他问题,例如许多使用已失效mcrypt 库的旧代码。这只是您可以编译的一个 PHP 插件。
现在将此推断到未运行并向 WP 报告统计信息的服务器。它没有描绘出漂亮的画面。去年夏天,我发现一个运行电子商务页面的网站仍然使用 Apache 1.3.3 和 PHP 4.1.2。它太旧了,它启用了 SSLv2 ......
不良做法
如果你在 SO PHP 问题上停留的时间足够长,你会看到很多人在练习糟糕的代码。这些年来我看到的一些问题
- SQL 注入
- 认为MD5是保护密码的好方法
- 在他们的代码中使用过时的 API(即
ext/mysql
旧的 MySQL 连接器)
- 信任用户输入来执行代码(即使用eval和用户提供的数据)
- 未关闭 PHP 代码中的安全风险(即exec函数)
对于未经训练的人来说,这看起来像是一个 PHP 问题,因为是程序员和他们的生态系统产生了问题。也许他们很着急。也许他们聘请了一些在业余时间做这件事的人,并且“让它发挥了作用”。
可以安全吗?
是的!但这种安全性需要付出一些努力。使您的 PHP 安装保持最新。哎呀,让你的整个服务器保持最新状态。主机不会做安全和补丁?寻找另一个主机。(我对那些对此犹豫不决的人感到惊讶)。构建自己的服务器(虚拟机很便宜)。但最重要的是,请注意。尽可能了解安全性。不要只是让您的网站和服务器出海。
告诉你 PHP 不安全的人只是懒惰。