#java #sockets #tcp #fileoutputstream
Вопрос:
У меня есть следующий код:
// in = InputStream inputStream = filePart.getInputStream()
// out = OutputStream out = socket.getOutputStream()
int read = 0;
byte[] bytes = new byte[25 * 1024];
while ((read = inputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
теперь давайте предположим, что кто-то вынюхивает мои данные, могут ли они каким-то образом перестроить каждый байт, который я передаю, чтобы перестроить файл, который я передаю? Я так полагаю.
Комментарии:
1. Где сидит «нюхач»? Внутри вашего примера будет считыватель дампа памяти или что-то в этом роде? Или вы имеете в виду человека-в-середине вашего сокета-записанные данные между вашими выходами. напишите и потенциальному клиенту где-нибудь в интернете?
2. Если данные, которые вы отправляете, не шифруются по проводу (т. Е. с помощью SSL/TLS и т. Д.), То да, анализатор, расположенный между вашим отправителем и предполагаемым получателем, может увидеть исходные данные и собрать их вместе.
Ответ №1:
Зависит.
Давайте предположим socket
, что имеется в виду сетевой сокет, то есть java.net.Socket
. Тогда это зависит от интерфейса, к которому подключен сокет. Если, например, это довольно обычное:
- Интерфейс-это сетевой порт в этом устройстве, к которому подключен кабель, который идет к обычному коммерческому кабельному модему домашнего использования jane, который затем идет к разделительной коробке на улице, а оттуда на стекловолокно, в широкий Интернет, например, к коммутатору центра обработки данных рядом с местом, где есть множество центров обработки данных, по трубе к одному из этих центров обработки данных, через их коммутационную инфру в нужную «комнату», к маршрутизатору, к концентратору в шкафу и, наконец, к серверу.
Тогда в основе почти везде это можно «вынюхать». Вот почему большая часть интернет — трафика зашифрована. В частности, можно отслеживать этот концентратор в шкафу, возможно, все другие серверы в этом ящике могут просто увидеть его, если они откроют свою карту в беспорядочном режиме. Если кто-то болтается снаружи и подсоединен к кабелю между вашим домом и разделительной коробкой в конце улицы, он, вероятно, может подслушивать. Исправьте это, используя, например, https.
Однако, если это так: сокет подключен к виртуальному интерфейсу, созданному драйвером VPN, тогда, что ж, остальная часть истории о том, как это попадает на другую сторону, вероятно, не имеет значения. По крайней мере, весь сегмент до тех пор, пока сигнал не отскочит от VPN, находится в «пространстве» VPN и физически маршрутизируется с помощью уровня косвенности. Если у вас нет какой-либо необычной реализации VPN, этот уровень будет зашифрован. Единственные, кто может «унюхать» это, если кто-то установил драйвер слежки на ваш компьютер. Если кто-то устанавливает программное обеспечение доступа корневого уровня без вашего ведома или согласия, вы обливаетесь из шланга, и ничто из того, что вы делаете, никогда не будет безопасным.
Так что, если мы можем пренебречь этим случаем, то в последнем случае: Нет, никто не может это вынюхать.