
Предположим, что в момент времени (1) я создаю именованный канал с помощью Python с целью, чтобы в конечном итоге этот процесс Python записал что-то в этот именованный канал. Почему? Потому что в момент времени (2) есть другой процесс, который, как ожидается, будет читать из этого именованного канала.
Итак, по сути, это IPC через именованные каналы. Почему это так удобно? Потому что это выглядит как файл, так что другой процесс, который может только читать файлы, может быть связан с этим механизмом именованного канала как с удобным IPC без необходимости переписывать другой процесс.
Но есть проблема:Предположим, что между моментом (1) и моментом (2) злой процесс начал читать из именованного канала первым перед этим предполагаемым процессом. Таким образом, мой скрипт Python может в конечном итоге отправить данные непреднамеренному процессу. Поэтому я не беспокоюсь, если угонщик начнет писать в процесс в моей конкретной модели риска (меня беспокоит только перехват чтения из канала перед предполагаемым процессом).
Вопрос:существует ли какой-либо механизм, гарантирующий, что никакой другой процесс, кроме предполагаемого, не будет считывать данные из IPC, кроме предполагаемого процесса?
решение1
Именованные каналы имеют разрешения на файлы, как и любой другой файл. Убедитесь, что при создании канала разрешения установлены таким образом, что только учетная запись, предназначенная для запуска вашего процесса, может читать из него.