PHP 7.4 устарела get_magic_quotes_gp c альтернатива функции - PullRequest
1 голос
/ 06 апреля 2020

Я столкнулся с ситуацией, когда один из моих старых кодов использует get_magic_quotes_gpc(), который устарел в последней PHP версии 7.4. *

В настоящее время у меня есть кое-что вот так.

Добавить слэши

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

Удалить слэши

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

Очевидно, что выдает ошибку

Устаревшее: функция get_magic_quotes_gp c () устарела

Вопрос:

Как это исправить? Так может работать то же самое без использования функции get_magic_quotes_gpc()?

1 Ответ

2 голосов
/ 17 апреля 2020

Вам необходимо удалить все упоминания об этой функции из вашего кода и не заменять ее чем-либо еще.

get_magic_quotes_gpc() бесполезен с PHP 5.4.0. Он скажет вам, включены ли в конфигурации кавычки волхвов c или нет. Магические кавычки c были ужасной идеей, и эта функция была удалена из соображений безопасности (PHP разработчики верили в магию c и суеверия и писали небезопасный код).

Скорее всего, даже вы сами не знаете, почему у вас была эта строка кода в вашем проекте. Я знаю, что меня одурачили, когда я учил PHP. Реальность такова, что вам это вообще не нужно. Эта функция не имеет ничего общего с безопасностью, и концепция очистки входных данных нелепа.

Вместо этого полагайтесь на хорошие рекомендации по безопасности.

  • Используйте параметризованные подготовленные операторы для взаимодействия с базой данных. PHP имеет очень хорошую библиотеку под названием PDO, которую можно использовать со многими драйверами БД, включая MySQL.
  • Если вы производите вывод, тогда экранируйте вывод с учетом правил этого носителя. Например, при выводе в HTML используйте htmlspecialchars() для предотвращения XSS.
  • Никогда не очищайте ввод. Не существует волшебного решения, которое защитило бы вас от всего. Вместо этого вы, как разработчик, должны знать об опасностях и знать, как защитить свой код.
...