Я полностью осознаю аберрацию Magic Quotes на PHP, как это зло, и я избегаю их, как вредителей, но что такое magic_quotes_runtime
? От php.ini:
Магические кавычки для генерируемых во времени данных, например данных из SQL, от exec () и т. Д.
- уникальный идентификатор переменной (например, spl_object_hash)
- Проверьте, поступает ли запрос из приложения Windows
- Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean указан в /home/folder/public_html/folder/folder/login.php в строке 18
- cakephp3 связывает одну таблицу с несколькими таблицами в зависимости от типа
- Экран загрузки JQuery для покрытия большого запроса mysql через PHP?
- Проверить загруженный файл в формате csv
Является ли что-то, что я должен проверить, если включено и выключено, с:
set_magic_quotes_runtime(false);
Часто ли он включен по умолчанию? Я знаю, что он устарел в 5.3.0 и удален в 6.0.0, но так как мой скрипт поддерживает 5.1.0+, я хотел бы знать, как справиться с этим в «устаревшем» PHP (если это актуально).
Изменить: Чтобы все было ясно, я хочу выйти («Отключить магические цитаты»); когда кавычки Magic включены. Я не полагаюсь на них!
Если magic_quotes_runtime включен, большинство функций, которые возвращают данные из любого внешнего источника, включая базы данных и текстовые файлы, будут иметь кавычки, скрытые с обратной косой чертой. Если magic_quotes_sybase также включен, одиночная кавычка экранируется с помощью одной кавычки вместо обратного слэша.
http://www.php.net/manual/en/info.configuration.php#ini.magic-quotes-runtime
Вы можете использовать ini_get для проверки его значения, например:
ini_get('magic_quotes_runtime');
Также вы должны обернуть вызовы set_magic_quotes_runtime / get_magic_quotes_runtime в вызовах function_exists, например:
if (function_exists('set_magic_quotes_runtime')) { set_magic_quotes_runtime(true/false); }
Но, конечно, не следует полагаться на магические цитаты вообще, и, если возможно, они должны быть отключены. Поместите эту ссылку в кучу причин, почему: http://www.php.net/manual/en/security.magicquotes.whynot.php
Если магические кавычки включены, php автоматически выйдет из кавычек, входящих в переменные POST или GET, и автоматически их не удалит при извлечении данных из базы данных, например.
Если вы используете такие вещи, как addslashes (), mysql_escape_string () или mysql_real_escape_string () с магическими кавычками, вы получите двойные кавычки.
Причина, по которой это зло, та же самая причина, что addlashes () и mysql_escape_string () являются злыми, потому что они не фиксируют все возможные методы помещения цитаты в строку. Это дает вам ложное чувство безопасности, думая, что вам больше не нужно беспокоиться об ускорении цитат, когда на самом деле вы все еще это делаете.
Кроме того, как будто ускользание строк было недостаточно для PITA, теперь вы должны проверить, включены или отключены магические кавычки, прежде чем пытаться убежать или не убежать от строки, чтобы избежать двойного экранирования.