PHP 7.4 不推荐使用的get_magic_quotes_gpc函数替代方案

2022-08-30 11:01:23

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

目前,我有这样的东西。

添加斜杠

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

删除斜杠

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

这显然是给出错误

已弃用:函数 get_magic_quotes_gpc() 已弃用

问题:

我该如何修复它?那么在不使用函数的情况下也可以工作吗?get_magic_quotes_gpc()


答案 1

您需要从代码中删除对此函数的所有提及,并且不要将其替换为任何其他内容。

get_magic_quotes_gpc()自 PHP 5.4.0 以来一直毫无用处。它会告诉您是否在配置中打开了魔术报价。魔术引号是一个可怕的想法,出于安全原因,这个功能被删除了(PHP开发人员相信魔法和迷信,并编写了不安全的代码)。

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

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

  • 使用参数化的预准备语句与数据库进行交互。PHP有一个非常好的库,叫做PDO,可以与许多数据库驱动程序一起使用,包括MySQL。
  • 如果生成输出,则根据该介质的规则转义输出。例如,在输出到 HTML 时使用以防止 XSS。htmlspecialchars()
  • 切勿清理输入。没有神奇的解决方案可以保护您免受一切侵害。相反,作为开发人员,您必须意识到危险,并且需要知道如何保护您的代码。不要尝试清理输入。转义输出。

答案 2

推荐