Каковы последствия для безопасности передачи двоичных данных в небинально-безопасную функцию?

В PHP термин «бинарный безопасный» звучит для меня как функция безопасности, помогающая защитить от бинарной эксплуатации, такой как переполнение буфера и т. Д.

Мне также известно, что некоторые функции имеют «многобайтовые» альтернативы с префиксом mb_, Например, substr а также mb_substr, Эти функции могут обрабатывать символы, которые занимают более одного байта.

Однако, каковы последствия передачи двоичных данных в функцию, которая не является бинарно-безопасной? Это неотъемлемая угроза безопасности, или функция просто выдаст предупреждение / ошибку?

Я не говорю о выводе функции, которая может быть передана в SQL, HTML и т. Д., Я говорю о фактической обработке функции внутри самого PHP.

Разве небинарно-безопасные функции предназначены только для безопасной обработки текста, и существует риск переполнения буфера или другой формы использования двоичных файлов при передаче в них двоичных данных?

1

Решение

Каковы последствия для безопасности передачи двоичных данных в небинально-безопасную функцию?

Это действительно зависит от того, что вы делаете.

Когда Facebook пытался удалить требование mbstring из своего хранилища PHP-Graph-SDK, они случайно представили риск подделки сообщения:

function sammy_hash_equals($knownString, $userString)
{
$kLen = strlen($knownString);
$uLen = strlen($userString);
if ($kLen !== $uLen) {
return false;
}
$result = 0;
for ($i = 0; $i < $kLen; $i++) {
$result |= (ord($knownString[$i]) ^ ord($userString[$i]));
}
// They are only identical strings if $result is exactly 0...
return 0 === $result;
}
// 8 chars but 32 bytes
$hashA = "\xF0\x9D\x92\xB3" . "\xF0\x9D\xA5\xB3" .
"\xF0\x9D\x92\xB3" . "\xF0\x9D\xA5\xB3" .
"\xF0\x9D\x92\xB3" . "\xF0\x9D\xA5\xB3" .
"\xF0\x9D\x92\xB3" . "\xF0\x9D\xA5\xB3";

$hashB = "\xF0\x9D\x92\xB3" . "\xF0\x9D\xA5\xB3" .
"\xF0\xAD\x9F\xC0" . "\xF0\xAD\x9F\xC0" .
"\xF0\xAD\x9F\xC0" . "\xF0\xAD\x9F\xC0" .
"\xF0\xAD\x9F\xC0" . "\xF0\xAD\x9F\xC0";

var_dump(sammy_hash_equals($hashA, $hashB));

В этом случае настройки конфигурации mbstring.func_overload продиктовал бы, было ли это использовать. И тогда это было бы только эксплуатируемым, если бы кто-то пытался использовать hash_equals() в PHP 5.5 (или более раннем) проекте с этой конфигурацией и использовал более раннюю версию патча Сэмми.

Максимум, с чем вы столкнетесь, — это то, что ваши данные повреждены (повреждены), и вам приходится сталкиваться с трудной задачей — восстановить их и / или очистить. Это не весело.

Разве небинарно-безопасные функции предназначены только для безопасной обработки текста, и существует риск переполнения буфера или другой формы использования двоичных файлов при передаче в них двоичных данных?

Нет, здесь нет риска переполнения буфера.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]