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

Я реализую socket в Python для передачи данных туда и обратно между двумя сценариями, работающими на одном компьютере, как часть одного приложения Tkinter.

Эти данные во многих случаях будут очень конфиденциальными (например, номера личных кредитных карт).

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

Сторона сервера:

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8089))
serversocket.listen(5) # become a server socket, maximum 5 connections

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print buf
        break

Сторона клиента:

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost', 8089))
clientsocket.send('hello')

Источник кода.

Дополнительные соображения:

  • Это будет работать только как часть одного приложения Tkinter на одной машине. Локальный хост всегда будет указан.
  • Я не могу использовать multiprocessing или threading; пожалуйста, никаких предложений по использованию одного из них или альтернативы, кроме разновидностей socket. Для получения дополнительной информации о том, почему, см. этот 1#comment80748400_46802154">ТАК вопросы, ответы и комментарии. Это связано с необходимостью работы в Windows 7 и * nix, а также с моей желаемой настройкой.

person user1318135    schedule 25.10.2017    source источник
comment
stackoverflow.com/questions/27287306 /   -  person bluszcz    schedule 26.10.2017


Ответы (1)


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

Чтобы избежать этого, вы должны зашифровать свой трафик - я разместил комментарий под вашим вопросом с примером решения.

person bluszcz    schedule 25.10.2017
comment
Спасибо, это очень полезно знать! Чтобы уточнить, превышает ли этот риск любой риск, исходящий от multiprocessing.Pipe для той же цели? Превышает ли это риск использования ноутбука Jupyter (который развертывается через локальный хост)? Просто пытаюсь немного лучше понять величину риска. - person user1318135; 26.10.2017
comment
Я не уверен, как Jupyter обменивается данными, вы можете проверить это с помощью: * netstats -tapdn |grep jupyter -i Позже, когда у вас будет количество портов, используйте: * tcpdump -xxxxvvvv -i any 'port ZZZ' # где ZZZ номер порта - person bluszcz; 27.10.2017