如何隐藏程序本身的变量

时间:2017-03-24 07:49:54

标签: python python-3.x subprocess

我不确定如何标题。哎呀,这甚至不是python问题,因为代码工作正常。让我解释一下,这可能需要一段时间。

所以,我一直在使用运行代码的不和谐机器人。可能是我最糟糕的想法之一,但我喜欢它可能带来的潜力(以及人们试图打破它的古怪结果),and this is what I ended up with.

我知道它不漂亮,但它是我的,我为此感到自豪。 It works and everything!虽然我很乐意让人们告诉我如何改进代码以及我的代码有多少,但这并不是我遇到的问题。

因此,这个机器人让每个人都可以运行他们想要的任何代码。任何东西。我甚至不担心。我将在树莓Pi中运行它,我将其归零几次,然后在其上安装了docker。我并不关心人们可以做些什么,因为没有任何敏感数据。好吧,差不多。这是问题所在。

所以,我的代码中的最后一行是这个。

bot_client.run(token)

该令牌是来自不和谐的API bot密钥。我真的不希望任何人能够知道它,因为他们可以在使用它的服务器中获得自己的机器人。但任何人都可以编写一段读取文件的代码。我很失落。我不确定如何保护API密钥。我尝试了一些东西,其中大部分与unix权限和用户/组相关,但是没有一个能够工作,因为bot创建的文件将继承同一个用户,所以我不能把它们放在不同的用户和调用中这一天。

关于我怎么能这样做?需要明确的是,this is what I want to avoid.

1 个答案:

答案 0 :(得分:2)

这是一般应用程序设计问题。目前,您有一个主脚本,可以创建新的python进程来执行代码,默认情况下,子进程可以完全访问您的磁盘,从而对您的源进行访问。

恕我直言,您应该在操作系统级别管理 ,以便在子进程中启动的Python解释器无法访问应用程序源的文件夹。但这只会付出代价,因为你必须设置2个不同的安全角色和它们之间的沟通渠道。

想到的第一个想法是在不同用户下运行的辅助守护进程,该用户根本不能访问应用程序的源文件夹。该守护进程必须启动子Python脚本。您可以使用(unix域)套接字或任何其他IPC通道在一侧传递文本,在另一侧传递输入/错误。

对不起,这只是一个暗示,但我现在意识到你的问题导致了一个相当广泛的问题。