将Discord Bot发布到Heroku时如何正确保护授权令牌?

时间:2018-08-13 08:43:44

标签: python heroku authorization bots discord

我拥有一个约有5000名员工的不和谐服务器,并同时在其上运行了一个机器人。

直到现在,该机器人连续两次遭到黑客攻击,之后发出了巨魔消息(幸运的是,因为我限制了该机器人的权限),因为我只是忘记了将授权令牌隐藏在GitHub存储库中-机器人授权令牌已在bot脚本中进行了硬编码,因此可以公开查看。

问题是,我对编码真的不熟悉...所以为了避免该问题,我只是将原始GitHub存储库部署到了Heroku,然后删除了GitHub上的整个存储库。这意味着该bot提交现在仅由Heroku私有托管,并且不再可以在GitHub上公开查看。目前,该机器人运行良好。

即使我现在每次要更新机器人时都必须创建一个新的存储库,但对我而言,只要当前的解决方案是安全的,这对我来说就没有问题。但是我不确定是否确实如此,因为我担心黑客仍会抓取该令牌,因为即使在GitHub上不再公开可见,该令牌仍在bot脚本中进行了硬编码。

我试图弄清楚如何向机器人提交中添加.env,但是却无法管理它,因为所有说明和教程都某种程度上仅是Java而不是Python。机器人脚本确实非常简单:

import discord    
from discord.ext import commands    
bot = commands.Bot(command_prefix='$')    
bot.remove_command("help")    
@bot.event    
async def on_ready():    
    print('Logged in as')    
    print(bot.user.name)    
    print(bot.user.id)    
    print('------')    
*[several commands]*

bot.run('The Token')

这是目前在Heroku上托管的bot提交,令牌已硬编码在bot脚本中,但不再可以在GitHub上公开查看。我根本不知道要在脚本中添加什么/在我的Heroku帐户中进行更改,以便通过授权在Heroku本身上的Bot令牌而不是在机器人脚本中创建.env来创建.env。

1 个答案:

答案 0 :(得分:0)

config.json 文件中定义令牌,将令牌定义为其中的变量,而不是fetch('http://"theserverip":3000/api', { method: 'POST', headers: { "Content-Type": "application/json" }, mode: 'no-cors', body: JSON.stringify({ name: 'dean', login: 'dean', }) }) .then((res) => { console.log(res) }) 放置bot.run('The Token')