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(如果他们具有适当的权限),如果错误/异常处理不当,可能会导致程序崩溃。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)