Безопасно ли использование Python tempfile. - PullRequest
2 голосов
/ 21 октября 2010

Безопасно ли использование Python tempfile.NamedTevenFile (т. Е. Устранены проблемы безопасности устаревшего tempfile.mktemp)?

def mktemp2():
    """Create and close an empty temporary file.
    Return the temporary filename"""
    tf = tempfile.NamedTemporaryFile(delete=False)
    tfilename = tf.name
    tf.close()
    return tfilename

outfilename = mktemp2()
subprocess.call(['program_name','-o',outfilename])

Что мне нужно для запуска внешней команды, для которой в качестве одного из аргументов требуется имя выходного файла,Перезаписывает имя выходного файла, если оно существует без предупреждений.Я хочу использовать временный файл, так как мне просто нужно прочитать его содержимое, позже оно мне не понадобится.

1 Ответ

3 голосов
/ 21 октября 2010

Совершенно небезопасно. У злоумышленника есть возможность создать файл с любыми разрешениями (или символической ссылкой) с таким именем в промежутке между моментом его удаления и открытия подпроцессом

Если вместо этого вы можете создать файл в каталоге, отличном от / tmp, который принадлежит вашему процессу и доступен только для чтения / записи вашим процессом, вам не нужно заботиться о безопасности файла, так как все в каталоге защищено

...