PHP 7.4 已弃用 get_magic_quotes_gpc 函数替代

PHP 7.4 deprecated get_magic_quotes_gpc function alternative

我遇到这样一种情况,我的一个旧代码正在使用 get_magic_quotes_gpc(),它在最新的 PHP 7.4 版中已弃用。*

目前,我有这样的东西。

添加斜杠

return get_magic_quotes_gpc() ? addslashes($string) : $string;

删除斜杠

return get_magic_quotes_gpc() ? stripslashes($string) : $string;

这显然是错误的

Deprecated: Function get_magic_quotes_gpc() is deprecated

问题:

我该如何解决?那么不使用 get_magic_quotes_gpc() 函数也可以工作吗?

您需要从您的代码中删除所有提及此功能的内容,并且不要用任何其他内容替换它。

get_magic_quotes_gpc() 从 PHP 5.4.0 开始就没用了。它会告诉您是否在配置中打开了魔术引号。魔法引号是个糟糕的主意,出于安全原因,此功能已被删除(PHP 开发人员相信魔法和迷信并编写了不安全的代码)。

很可能连你自己都不知道为什么你的项目中有这行代码。我知道我在学习的时候被它忽悠了PHP。事实是你根本不需要它。此功能与安全无关,输入清理的概念是荒谬的。

相反,请依赖良好的安全准则。

  • 使用参数化准备语句与数据库进行交互。 PHP 有一个非常好的库称为 PDO,它可以与许多数据库驱动程序一起使用,包括 MySQL。
  • 如果您产生输出,那么考虑到该媒体的规则,转义输出。例如当输出到 HTML 时使用 htmlspecialchars() 来防止 XSS。
  • 永远不要清理输入。没有神奇的解决方案可以保护您免受一切侵害。相反,作为开发人员,您必须意识到危险,并且您需要知道如何保护您的代码。 Don’t try to sanitize input. Escape output.