php, предотвращающий внедрение mysql с помощью gzcompress?

#php #mysql

#php #mysql

Вопрос:

Возможно ли предотвратить внедрение mysql с помощью функции gzcompress (и после извлечения ее из базы данных, gzuncompress)? Или есть причина, по которой это не сработало бы? Или есть причина, по которой это вообще не было бы хорошей идеей?

Комментарии:

1. AFAIK, лучший способ предотвратить внедрение sql — это использовать аргументы команды вместо конкатенации.

Ответ №1:

Это плохая идея, потому что

  • Теоретически, может существовать последовательность данных, которая при сжатии приводит к SQL-инъекции или просто прерывает запрос

  • сжатые данные не могут быть должным образом проиндексированы и выполнен поиск — у вас будет база данных, полная искаженных символов

  • gzcompression требует больших вычислительных затрат

просто всегда очищайте свои данные перед вводом их в базу данных, используя метод экранирования строк вашей библиотеки (например mysql(i)_real_escape_string() ) или параметризованные запросы.

Если вы делаете это надежно, дополнительная защита не требуется.

Комментарии:

1. Хотя вероятность того, что сжатые данные приведут к внедрению SQL, настолько мала, что практически отсутствует, больше шансов, что это просто нарушит ваш синтаксис SQL. Итак, вы все равно возвращаетесь к экранированию или привязке значений. 1

Ответ №2:

для защиты от атак SQL-инъекций используйте параметризованные запросы PDO.

Ответ №3:

Внедрение SQL можно предотвратить 1 из 2 способов. Вы можете использовать параметризованные запросы или вы можете правильно очищать значения при создании ваших инструкций SQL.

Теперь то, что вы предлагаете, вероятно, предотвратит вредоносные внедрения в базу данных, но это не исключает возможности того, что в ваши SQL-инструкции будут внесены синтаксические ошибки SQL (фактически SQL-инъекция).

Кроме того, с помощью функций сжатия это устранит возможность просмотра или поиска содержимого базы данных без прохождения декомпрессии.

Это новый подход к предотвращению внедрения SQL, но он вызовет у вас больше проблем, чем решит на самом деле. Вам действительно нужно придерживаться проверенных решений.