【问题标题】:How to hide a variable from the program itself [closed]如何从程序本身隐藏变量[关闭]
【发布时间】:2017-08-17 01:44:22
【问题描述】:

我不知道如何命名。哎呀,这甚至不是 python 问题,因为代码运行正常。让我解释一下,这可能需要一段时间。

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

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

所以,这个机器人让每个人都可以运行他们想要的任何代码。任何事物。我什至不担心。我将在我多次归零的树莓派中运行它,然后在其上安装 docker。我真的不关心人们可以对它做什么,因为不会有任何敏感数据。嗯,差不多。这就是问题所在。

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

bot_client.run(token)

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

知道我该怎么做吗?只是说清楚,this is what I want to avoid.

【问题讨论】:

  • 呃,什么?我认为这里的问题是你让任何人“运行他们想要的任何代码。任何东西”
  • 我建议你把这个问题缩减到 5 行左右。现在里面有太多不相关的噪音,很难解析出你想要的东西。切入正题。然后会有更多的人愿意并且能够提供帮助。

标签: python python-3.x subprocess


【解决方案1】:

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

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

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

很抱歉,这只是一个提示,但我现在意识到你的问题导致了一个相当广泛的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多