Я пытаюсь сохранить случайно сгенерированную соль в моей базе данных с помощью SQL. Я сгенерировал эту соль в php, используя эту строку кода:
$salt = mysqli_real_escape_string($this->connection, mcrypt_create_iv(256, MCRYPT_DEV_URANDOM));
Насколько я понимаю, все строки должны быть экранированы независимо от того, получены ли они из пользовательского ввода, поскольку моя произвольная соль также может содержать специальные символы, которые мешают SQL, независимо от того, являются ли они намеренно вредоносными? Как я понимаю, для экранирования строки PHP необходимо добавить дополнительные символы, тем самым увеличив длину строки. Мне было интересно, какая максимальная длина строки будет после побега? Неужели только один символ добавляется к каждому нарушающему символу в строке, поэтому максимальная длина строки составляет 512 для моей строки из 256 символов?
Спасибо
Не убегай. использование параметры привязки вместо.
Кроме того, учитываемый размер является неэкранированным значением. Экранирование только для того, чтобы парсер мог безопасно читать строку. Фактическое строковое значение все равно того же размера (и будет обработано в неэкранированном виде механизмом MySQL). Экранирование — это просто способ безопасно вставить значение в запрос.
Других решений пока нет …