我试图使我的代码模块化,因为它太长了,问题是我不知道我是否在安全地这样做。我将代码分割成不同的文件,因此,一个python文件运行其他文件,有时我必须调用一个将运行另一个文件的文件,再运行另一个文件,因此需要多个链接命令。
问题在于某些文件将处理诸如密码之类的敏感信息,所以我不知道我是否安全地这样做。理想情况下,执行完1个文件后,它应该关闭自身,并从内存中删除所有变量,并释放该空间,就像通常我只是执行1个文件一样,问题是我不知道是否我称多个文件相互嵌套,这适用。显然,只有执行的文件才应该清除自身,而不是活动的文件,但是我不知道是否是这种情况。
我一直在这样调用我的模块
os.system('python3 ' + filename)
随后,在每个文件中,相同的代码使用os.system
调用另一个文件,从而形成嵌套或链接的调用系统。
例如,如果我从shell调用第一个文件:
python3 file1.py
然后调用file1:
os.system('python3 file2.py')
然后调用file2:
os.system('python3 file3.py')
我希望file3从内存中清除并在运行后完全关闭,而file2和file1可能仍处于活动状态。我不希望file3在执行完之后仍保留在内存中。因此,如果file3使用密码,则显然应该在运行后从内存中清除密码。
该怎么做?
我已经阅读了多种选择:
from subprocess import call
call(["python3", "file2.py"])
import subprocess
subprocess.call("file2.py", shell=True)
execfile('file2.py')
import subprocess
subprocess.Popen("file2.py", shell=True)
哪个更安全?
答案 0 :(得分:1)
Python在很大程度上依赖于导入的概念。您不应该尝试在这一方面重新发明轮子。只需从主脚本中导入脚本并使用函数即可触发它们。如果您要确保变量被丢弃,则应在函数末尾或变量不再使用时添加一个del语句。
另一方面,您的密码问题从一开始就是有缺陷的。如果.py文件包含纯文本密码,则不是,在任何情况下都不会保护该密码。您应该实现一个秘密:请参阅本主题:I need to securely store a username and password in Python, what are my options?