在Python中创建临时FIFO(命名管道)?

在Python中创建临时FIFO(命名管道)?,第1张

在Python中创建临时FIFO(命名管道)?

os.mkfifo()``OSError: [Errno 17] Fileexists
如果文件已经存在,将失败,但不会出现异常,因此这里没有安全性问题。使用的安全性问题
tempfile.mktemp()
是竞争条件,在这种情况下,攻击者可能会在自己打开文件之前创建具有相同名称的文件,但是由于
os.mkfifo()
如果文件已经存在,则失败,这不是问题。

但是,由于

mktemp()
已弃用,因此不应使用它。您可以
tempfile.mkdtemp()
改用:

import os, tempfiletmpdir = tempfile.mkdtemp()filename = os.path.join(tmpdir, 'myfifo')print filenametry:    os.mkfifo(filename)except OSError, e:    print "Failed to create FIFO: %s" % eelse:    fifo = open(filename, 'w')    # write stuff to fifo    print >> fifo, "hello"    fifo.close()    os.remove(filename)    os.rmdir(tmpdir)

编辑:我应该明确指出,仅由于此

mktemp()
漏洞避免了,仍然需要考虑其他常见的安全问题;例如,攻击者可以在程序执行之前创建fifo(如果他们具有适当的权限),如果错误/异常处理不当,可能会导致程序崩溃。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5642673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存