首頁 游戲

Minecraft指令手冊(cè)

第五十一章 whitelist-白名單

Minecraft指令手冊(cè) 你好MC 504 2020-01-28 18:07:21

  在Minecraft服務(wù)器中,有一個(gè)很重要的系統(tǒng):白名單系統(tǒng)。

  什么是白名單?簡單來說,白名單就是服務(wù)器隨身攜帶的一個(gè)小本本,上面記錄了一些玩家。當(dāng)一個(gè)服務(wù)器啟用白名單系統(tǒng)后,每個(gè)玩家想要進(jìn)入服務(wù)器時(shí),服務(wù)器就會(huì)從兜里掏出小本本,看看該玩家是否被記錄在小本本上。如果有記錄,那么服務(wù)器會(huì)允許玩家游玩服務(wù)器,反之則會(huì)拒之門外。

  可以說,有了白名單系統(tǒng),服務(wù)器就能夠幾乎不受熊的騷擾。對(duì)于Java服務(wù)器來說,白名單再加上正版驗(yàn)證,那安全性簡直不要太好。

  Minecraft服務(wù)器的白名單系統(tǒng)簡單來說由兩部分組成:服務(wù)器根目錄下的whitelist.json文件和/whitelist指令。(注:作者沒有開過基巖版Minecraft服務(wù)器,暫不清楚基巖版服務(wù)器是否和Java版服務(wù)器情況一致。如果有開過基巖版服務(wù)器的讀者可以在這兒留言說明一下。)

  這個(gè)whitelist.json文件內(nèi)用JSON記錄了白名單上的玩家數(shù)據(jù)。這個(gè)玩家數(shù)據(jù)的組成也很簡單:由玩家名和UUID組成。

  在Java版服務(wù)器中,開啟正版驗(yàn)證的情況下,玩家名和UUID都有用處。因?yàn)槊總€(gè)正版玩家都有一個(gè)獨(dú)一無二的UUID和玩家名。什么是UUID?簡單來說,UUID就是你在Minecraft中的身份證號(hào)碼,游戲需要通過UUID來識(shí)別你。UUID可以通過Mojang提供的官方api接口進(jìn)行查詢,因此可以保證不會(huì)有玩家冒充某個(gè)獲得白名單的另一個(gè)玩家進(jìn)入服務(wù)器。

  至于基巖版服務(wù)器?;鶐r版服務(wù)器沒有離線賬號(hào)一說,全部賬號(hào)都是XBOX的游戲賬號(hào),因此也有獨(dú)一無二的UUID。

  但如果沒有開啟正版驗(yàn)證,離線服務(wù)器的白名單就沒有那么保險(xiǎn)了。至于為什么會(huì)不保險(xiǎn),我們待會(huì)再研究。

  白名單的另一部分是/whitelist指令。該指令的使用方法如下:

  /whitelist add <玩家名>——將玩家添加到白名單,并且該玩家不需要在線。

  /whitelist list——列出白名單中的玩家。

  /whitelist off——在此服務(wù)器上禁用白名單系統(tǒng)。

  /whitelist on——在此服務(wù)器上啟用白名單系統(tǒng)。

  /whitelist reload——從服務(wù)器文件夾中重新讀取white-list.txt(1.7.5及以前)或whitelist.json(1.7.6及以后)文件中的白名單列表。

  /whitelist remove <玩家>——將玩家名從白名單中移除。被移除的玩家不需要在線。

  是不是很簡單?我們現(xiàn)在來看一個(gè)情景:

  當(dāng)天下午,某名玩家通過MC百科的找服玩功能找到了一個(gè)開啟了正版驗(yàn)證和白名單系統(tǒng)的1.12.2版本Java服務(wù)器,并通過了該服務(wù)器的白名單獲取考試和QQ群加入審核?,F(xiàn)在服務(wù)器管理員要將該玩家加入到服務(wù)器白名單列表當(dāng)中,他一共可以采取三種方法來完成這項(xiàng)任務(wù):

 ?、贂簳r(shí)禁用服務(wù)器白名單功能(運(yùn)行/whitelist off),等待該玩家加入服務(wù)器。該玩家加入服務(wù)器后,管理員運(yùn)行“/whitelist add 該玩家名稱”將該玩家加入白名單中,最后再運(yùn)行/whitelist on開啟白名單功能。

 ?、谂c該玩家私聊,獲取該玩家的玩家名信息。讓該玩家先嘗試加入一遍服務(wù)器,然后服務(wù)器管理員打開服務(wù)器根目錄的usernamecache.json文件(該文件記錄著玩家名和對(duì)應(yīng)的UUID),根據(jù)用戶名找到對(duì)應(yīng)的UUID,接著手動(dòng)修改whitelist.json文件,最后運(yùn)行/whitelist reload重載白名單。

 ?、叟c該玩家私聊,獲取該玩家的玩家名信息。然后直接運(yùn)行“/whitelist add 玩家名”即可。

  很明顯,①方案是個(gè)下策,風(fēng)險(xiǎn)性很高。②方案如果不是服主或服主的好朋友,否則很難獲取服務(wù)器目錄的訪問和修改權(quán)。③方案是最好的方案,也是最簡單的方案。

  現(xiàn)在你學(xué)會(huì)了吧?

  那么為什么離線服務(wù)器的白名單不保險(xiǎn)呢?

  首先,我們要了解:什么是離線服務(wù)器。

  離線服務(wù)器,并不是指可以斷網(wǎng)玩的Minecraft服務(wù)器,而是指沒有開啟正版驗(yàn)證的服務(wù)器。離線服務(wù)器不會(huì)驗(yàn)證進(jìn)入的玩家是否為正版玩家,因此自然也不會(huì)專門去獲取該玩家的UUID(就算該玩家是正版玩家),而是會(huì)隨機(jī)生成一串UUID。由于UUID是服務(wù)端隨機(jī)生成的,那么肯定就無法通過UUID來驗(yàn)證玩家,因?yàn)榭蛻舳瞬恢酪膊粫?huì)記錄服務(wù)端隨機(jī)生成了什么UUID。所以在離線服務(wù)器中,唯一能夠驗(yàn)證玩家的便是玩家名。

  由于離線賬號(hào)下的玩家名可以不受限制的重復(fù),因此開啟了白名單驗(yàn)證的離線服務(wù)器就有可能會(huì)出現(xiàn)以下情況(該情況根據(jù)真實(shí)事件改編):

  A是一名獲取了該服務(wù)器白名單的玩家,玩家名叫做scp

  B是另外一名玩家,但玩家名也是scp

  B有一天嘗試直接進(jìn)入到A所玩的服務(wù)器,然后他成功了,并且一開局就有經(jīng)驗(yàn)值和一堆物品!

  很明顯,離線服務(wù)器就算開啟了白名單,只要他人搞到了能夠進(jìn)入服務(wù)器的玩家名字,就可以通過“盜取”他人游戲賬號(hào)來進(jìn)入服務(wù)器,這也就是為什么Mojang在每次離線服務(wù)器啟動(dòng)的時(shí)候都要加上一句警告信息。

  而獲取能夠進(jìn)入服務(wù)器的玩家名字很簡單。只要有人在線,就算是沒有白名單的人也能通過服務(wù)器信息搞到在線玩家名,進(jìn)而修改自己的玩家名進(jìn)入服務(wù)器。

  那么離線服務(wù)器能否解決這個(gè)問題呢?

  有兩個(gè)解決辦法:

 ?、匍_啟正版驗(yàn)證。但是離線服務(wù)器玩的人基本上沒有正版,所以對(duì)于那些玩家來說打擊很大。

 ?、诓灰褂迷娴姆?wù)端,采用第三方可以裝插件的服務(wù)端或在原版服務(wù)端的基礎(chǔ)上裝Forge再加上SpongeForge(海綿端),并給服務(wù)器裝上適宜的登錄插件,讓玩家進(jìn)入服務(wù)器還需輸入一次密碼進(jìn)行二次驗(yàn)證。

 ?、鄄捎玫谌狡つw站或自建皮膚站,修改官方服務(wù)端的驗(yàn)證服務(wù)器為自己的驗(yàn)證服務(wù)器,然后開啟正版驗(yàn)證。此時(shí)使用指定皮膚站賬號(hào)的玩家就被服務(wù)器視作正版玩家,也就解決了白名單問題,還順帶解決了皮膚顯示問題。

  第一個(gè)解決辦法雖然很保險(xiǎn),但是可能會(huì)因此喪失幾乎所有的玩家(因?yàn)橥骐x線服務(wù)器的玩家大多數(shù)沒有正版賬號(hào))。對(duì)于已經(jīng)運(yùn)行一段時(shí)間,有一定體量的服務(wù)器來說,最好采用第二個(gè)解決辦法,順帶還可以給服務(wù)器裝更多插件,搞得更加高大上一些。對(duì)于沒多少玩家的新開服務(wù)器,還可以采用第三個(gè)解決辦法,目前很多MC Java服務(wù)器也是采用這個(gè)辦法通過開源的Blessing Skin Server自建MC皮膚站來解決皮膚顯示和白名單問題。

  那么本章就到此結(jié)束了。下一章我們將了解黑名單和/kick指令的使用。(/kick還要講嗎?是個(gè)人都會(huì)用!)

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南