Запазвайте байтовете на двоичен файл при качване през прокси
Запазвайте байтовете и дължините в байтове на файла при качване през прокси, вместо да декодирате файла като текст и да го пресъздавате с ASCII.
Двоичният файл трябва да достигне до HTTP клиента като байтове. Четенето му с текстов четец и повторното кодиране на получения низ като ASCII може да замени стойности, преди проксито да получи каквото и да е. Успехът на малка текстова извадка не прави този път безопасен за изображение, архив или документ.
В съществуващ път за качване в .NET заменете това преобразуване с двоичен източник на тялото:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);Предайте съдържанието през конфигурираното HTTP качване на приложението; фрагментът установява източника на тялото, докато съществуващият клиент все още отговаря за метода, дестинацията, проксито и управлението на жизнения цикъл.
Премахнете всеки Content-Length, изчислен от броя символи на стария низ. Полето измерва октети. Оставете HTTP библиотеката да изгради рамкирането от представянето на тялото, вместо да съчетавате брой символи с различно кодиран буфер.
За умишлено текстово качване изберете кодирането изрично и изведете необходимата дължина от изпратените байтове. Това решение за текстов формат не трябва да се прилага към произволни файлове.
Сравнете прехвърления файл с доверена очаквана стойност. Успехът на HTTP потвърждава, че операция по качване е завършила на този слой; той не може да покаже, че предишно текстово преобразуване е запазило оригиналните байтове.