# 全面解析Discord安全问题

By [Xing](https://paragraph.com/@xing824) · 2022-05-19

---

最近看到Discord的安全问题频发，近期本人也从Discord的普通用户，转变到Discord社区的运营者，同时也成为了Discord生态上的开发者，所以本文就以Discord的安全作为主题给大家分享一下Discord上有关安全的问题。

实际上Discord的安全问题被诟病已久，但这也不能完全责怪Discord，因为Discord实在是太开放了，就像最初的Android一样，任何一个APP都可以拿到几乎系统的所有权限，所以任何一个APP有安全风险，那么整个系统都会有安全风险。上面说到Discord的三个角色（普通用户、运营者、开发者），任何一方未对安全引起重视也都会导致安全问题。

安全无小事，希望这篇文章能够帮助到以上三个角色的读者们。

对于普通用户
======

Discord上的用户遭受损失主要是因为Discord上的钓鱼网站信息太多了，所以对于普通用户来说，为了避免被钓鱼，需要注意以下几点：

### 关闭私信

![关闭私聊](https://storage.googleapis.com/papyrus_images/bb070dd9a39d286bc31a14152ade371ca5a0731ad52249a1b9a6d883827d26de.png)

关闭私聊

该选项如果打开的话，Discord的成员可以直接向你发起私聊，而这些成员的头像以及账号也许会与你在Discord里看到的管理员一模一样，这时你也许就会放松警惕而轻信这个账号，所以当他们发送某个链接给你的时候也许你就被钓鱼成功了。

另外好友请求也需要注意，最近我在OpenSea的Discord里问了个问题，结果也是头像和账号和Discord管理员一模一样的账号来请求加好友，这种情况直接忽略就好。

### 不要点击任何未知链接

![冒充官方公告的钓鱼消息](https://storage.googleapis.com/papyrus_images/724973795442abfc172358a9e41186ef9897b9ba6c184b2ddd84e9469a20bb2f.png)

冒充官方公告的钓鱼消息

这个截图是OpenSea官方的Discord中的消息，大意是说OpenSea要和YouTube合作发行NFT，只有100个免费名额。小白用户看到这个消息可能立马FOMO了，点击截图中的链接后，看到的网站大概长这样。

![钓鱼网站](https://storage.googleapis.com/papyrus_images/00bdd5b3e47adc6d5203f8634df410b5609b7fb791b5437d65a0a95f69354afc.png)

钓鱼网站

看到域名和网站都没问题，想到只有100个名额，也许就赶紧点Claim抢Mint了，但执行了该交易之后你的NFT也就丢了。

所以看到这种消息千万需要提高警惕，一般来说各个项目方发行NFT的话都会提前发布消息，这种突然告诉你要发布NFT的消息一般都是假的。

### 如何判断钓鱼网站

有时候在Discord里看到无论是谁发来的链接（可能是群友、管理员、机器人发的链接），在点击之前首先需要看访问的域名是不是项目官方的域名，如果不是的话点击进入后就需要十分警惕：

如果该网站唤起MetaMask的弹窗只是要求查看你的钱包地址，是安全的，例如下图：

![获取查看你钱包地址的权限](https://storage.googleapis.com/papyrus_images/f58e0f9944a67862af72198e8949644eeb637eae6d71298513084fdc5cf80d8d.png)

获取查看你钱包地址的权限

该操作只是授权该网站查看你的钱包地址，不会对你的资产有其他操作。

当你继续在该网站上浏览，需要进行钱包相关操作的时候就需要特别留意了，一般网站唤起你的MetaMask总共有如下几个操作类型：

*   **转账**
    

![转账时MetaMask弹窗](https://storage.googleapis.com/papyrus_images/585248473a0ebf6e5e9ed6e7dd246c5d60628fdffa835db85ba6449315524d41.png)

转账时MetaMask弹窗

如果网站唤醒的是截图上的转账请求，你需要注意转账的目标地址是不是你希望转出的地址，以及转账的金额是否正确。

对于转账来说比较简单，只要确定收款地址和金额就好了。

*   **签名**
    

一般来说获取签名的目的是为了证明你拥有该钱包地址，例如Discord里有个叫Collabland的机器人，它就是通过签名来验证你拥有该钱包地址，并且该钱包地址上拥有该NFT，验证通过后就会给你一个Holder身份认证。

![CollabLand验证身份时的签名内容](https://storage.googleapis.com/papyrus_images/6f4dcbee4efb9fd3fc32b1569e62d59681d978c6150756e503f2ed0328633719.png)

CollabLand验证身份时的签名内容

如果大家看到的签名内容是这种明文可读的就没有什么问题了，你能看明白这段话是什么意思。但注意胡乱签名也是会导致资产损失。

![OpenSea挂卖单时的签名内容](https://storage.googleapis.com/papyrus_images/71ba74b081fae9bee363f313fb8e03f5388a3b56fb9e8047f99dabeb616a868e.png)

OpenSea挂卖单时的签名内容

但如果大家看到的签名内容如上面这个截图，看不明白是什么，就别操作了。因为上面这个弹窗的签名内容是OpenSea的卖单签名，但卖单的价格可能被攻击者设置为0.001E，如果你不小心在钓鱼网站对此签名了，你的NFT可能就会被低价卖给钓鱼者。

所以对于签名消息有一个大致原则，看得懂就签，看不懂就别签。

*   **合约调用**
    

大家在很多网站上遇到更多的情况是合约调用，例如mint NFT之类的操作等。

![](https://storage.googleapis.com/papyrus_images/d8b84e671d71394647f99eb0b9fd76520f2b11e82ebdabb11c8b6365be332b8f.png)

如果是合约调用，首先需要确定的是调用的“合约地址”是不是官方公布的合约地址，确定合约地址没问题之后再看调用该合约的“功能类型”，如果“调用功能”类型显示approve、setApprovalForAll、transfer、safeTransferFrom之类的字样就需要警惕了，因为这是给出授权让别人可以转移走你的资产，这也是最常见的钓鱼方式。

前文所说的OpenSea的Discord被攻击发出的钓鱼网址，以及本人下面推特分享的案例都是这种方式。

[https://twitter.com/nelsonie/status/1506819101163126784](https://twitter.com/nelsonie/status/1506819101163126784)

所以对于合约调用的总体原则就是：确认合约地址正确，确认操作类型不是approve、setApprovalForAll、transfer、safeTransferFrom等字样。

对于运营者
=====

对于大部分场景做到以上，普通用户就可以避坑了，但是作为Discord的运营者，我们需要比普通用户更尽责地保护社区成员的安全，避免因为运营者的安全疏忽导致用户的损失。对于Discord的运营者，也有以下几点需要注意的：

### 开启2FA

没有开启2FA的话，一旦账号密码泄漏，那么攻击者就可以利用管理者的账号发布钓鱼信息。

### 别点陌生链接

目前发现有针对于Discord管理者钓鱼的网站，管理者进入网站被引导后会让攻击者得到管理者的Discord session，攻击者利用session就可以绕开2FA及登陆验证，直接以管理员的身份接管Discord社区了。下面推文有详细分析，感兴趣的朋友可以看看。

[https://twitter.com/Serpent/status/1485002643370037254](https://twitter.com/Serpent/status/1485002643370037254)

### 尽量少引入Bot

为社区每增加一个Bot，就会带来多一分的安全风险，任何一个Bot被攻击者利用了，都能够对社区的Discord发起SCAM攻击。

Crepto社区只引入了一个外部Bot，CollabLand，用于验证holder的身份，毕竟已经是Discord标配了。其他Bot如果不是必须使用的话，Crepto社区也就不再引入了。

### 引入Bot权限过大

Discord管理员引入Bot的时候，需要注意Bot索取的服务器权限，秉持最小授权原则，如果发现一个功能简单的Bot要求管理员权限的话，最好不要引入。因为这个Bot的项目方如果被攻击，轻则只是给您的Discord社区发送垃圾消息，重则它可以剔出所有用户，删除所有频道和记录。

![CollabLand索取的服务器权限](https://storage.googleapis.com/papyrus_images/065cfff4df69a8ffebfaada5489f1f292505b8611fb45a3f9b6ab737a5f29d64.png)

CollabLand索取的服务器权限

上面是引入CollabLand Bot时索取服务器的权限，CollabLand Bot要求授权的是“管理员”这个最高权限。CollabLand Bot的作用是给通过认证了的holder授予了某个角色，实际上CollabLand Bot只需要索取管理Member和Role的权限就足够了，但不知道为何索要了最高权限？也希望知道的朋友告知一下。

所以对于Discord的管理者来说，Discord的安全主要在于：

1.  管理者账号的安全
    
2.  Bot的安全
    

管理者账号的安全可以由团队提升安全意识来保证，但Bot的安全对于管理者来说却无能为力，所以管理者只能是秉持能少用Bot就少用，能少给授权就少给的原则来处理即可。

对于开发者
=====

Crepto社区已经开发了两款Discord Bot，也算是对Discord的开发有所了解。所以对于在Discord上进行开发的朋友们，也给出了以下几点安全建议：

*   **Bot的Token一定要保证安全**
    

Discord的开发者都知道，Bot的生命线就掌握在Token上，Token被攻击者拿到之后，攻击者可以利用你的Bot干他想干的任何事情，所以千万需要像重视钱包私钥安全那样去重视Bot的Token。

*   **运行Bot的服务器安全**
    

服务器安全的话题可以无限展开，但这里就提醒一点，Bot Token的安全十分重要，Bot是在服务器上运行的，所以服务器被攻破意味着Token也泄漏了，当然还有Bot所获取Discord上的所有数据也全泄漏了。

*   **养成定期更换Token的习惯**
    

就跟一些网站定期要求用户更换密码一样，虽然Discord没有强制要求开发者定期更换Bot的Token，但我认为养成定期更换Token是必不可少的，特别是你的Bot用户数量多的时候。

![通过Reset来定期更换Bot Token](https://storage.googleapis.com/papyrus_images/5010806a9181ba78f1c8667e6974e7c079bd95fa7d02f2f58ada5dd1014b6f1d.png)

通过Reset来定期更换Bot Token

*   **Bot按需索取权限**
    

千万别无脑索取Discord服务器的“管理员”权限，确认你的Bot需要用到哪些功能，再去索取相应的权限。这样即便你的Bot被黑，那么受损程度也被控制在一定范围之内。

对于开发者的总体原则就是保证Bot Token的安全，以及最小索取你的Bot权限。

最后植入硬广
======

Crepto社区做了两个Bot，一个Bot是个性化订阅NFT数据推送，另外一个就是HongBao Bot。大家可以像微信群发红包那样，在Discord群里发红包（支持所有ERC-20兼容代币，支持ETH，Polygon和BSC三条公链）。

[https://twitter.com/nelsonie/status/1526815337785659392](https://twitter.com/nelsonie/status/1526815337785659392)

用HongBao Bot可以活跃社区气氛，也可以作为管理员收集用户钱包地址的工具，还可以作为社区白名单的抽奖工具（比如抢到数量最多的10名用户中奖）。

![最小索取权限原则](https://storage.googleapis.com/papyrus_images/3487f7e7c35d5ef1b0f1e6093e9affdf68eda4dff223848dccde5efeed5b6a4f.png)

最小索取权限原则

HongBao Bot所需要的权限仅仅是读取和发送消息，由管理员自行决定并授权可以在哪个channel里使用HongBao Bot，即便HongBao Bot被黑掉了，社区遭受的损失也能最小化。当然我们会保证上述情况不会发生。

虽然上文说到为了Discord安全考虑，尽量少引入Bot，但是我们也希望大家可以添加[HongBao Bot](https://discord.com/api/oauth2/authorize?client_id=962986859619827722&permissions=3072&scope=bot%20applications.commands)到您的Discord里玩玩，因为真的很活跃气氛！HongBao的各个主网合约地址也可以在[项目主页](https://hongbao.crepto.xyz/#/)上找到，希望大家喜欢！

最后欢迎想在Web3行业做builder的朋友加入[Crepto](https://discord.gg/crepto)这个大家庭。

---

*Originally published on [Xing](https://paragraph.com/@xing824/discord)*
