Почему каналы считаются опасными для использования в Windows / Unix / Linux?
-
08-07-2019 - |
Вопрос
Почему трубы считаются опасными для использования? Что можно сделать, чтобы избежать этих проблем безопасности?
Меня больше всего интересует Windows, но если у вас есть другая информация об ОС, пожалуйста, предоставьте.
Решение
(предполагается, что вы говорите об именованных каналах Unix из упоминания 'c' и 'IPC'. Именованные каналы Windows работают несколько иначе)
Каждый, у кого есть разрешения, может писать в именованный канал, поэтому вы должны быть осторожны с разрешениями и блокировками (см. flock () ). Если приложение доверяет входным данным, которые оно получает из именованного канала (что обычно имеет место, если вы явно не встраиваете проверку входных данных в него), злонамеренный пользователь может записать любые желаемые данные в именованный канал, если у них есть разрешение.
Кроме того, любой пользователь с разрешениями может читать из канала и перехватывать данные, выходящие из него, если вы не заблокировали его исключительно. Затем данные отсутствуют во входном потоке, который ожидает читатель.