Skip to main content

Rikaido 你到底有多懂我?

· 2 min read

一早醒來

今天醒來,發現大家限動都在發這個連結 RIKAIDO.ME 這是一個測驗遊戲,大家可以點進去看看

遊戲連結

總之就是你先答完題目,再給你朋友填,讓他猜你的答案是什麼,分數越高就越懂你的一個遊戲

坐車

下午坐車時,我就在想這遊戲可以怎麼做到滿分?
就做兩次啊!呵呵呵 然後我又睡了

後來實在太無聊,開電腦點了某一位朋友的測驗連結,點網頁顯示器 想說看一下後台,結果發現了這遊戲居然 API沒加密這是資安低級錯誤欸

答案

直接和大家說哪裡看得到答案

我是用safari瀏覽器,如果你用其他瀏覽器可能會不太相同,但找一找應該就會看到了

首先

  • 打開左上角「開發」選單中的「顯示網頁檢閱器
  • 開發者面板跳出來後,找到「網路」接著按 command + R 重整頁面
  • 找到 documents:batchGet 點進去
  • 嗯 然後你就會看到答案了 AABBABABAB這東西就是答案

解答怎麼會洩漏?

API沒加密

API這東西就是網頁的前端、後端之間的橋樑,就你點擊連結時,前端也就是你手機或電腦,會向API發請求:「給我這份測驗的資料」

然後問題就來了!
API直接把這份測驗的所有欄位,題目、選項、創作者選好的解答 ,一並打包成JSON資料,丟給前端

雖然只要「前端畫面不把答案顯示在螢幕,使用者就看不到」,but查看API回傳的原始封包,解答就一覽無遺了

前端信任陷阱

「永遠別信任前端」
這是網路安全中的經典觀念

畢竟前端(瀏覽器、app)是運行在使用者的設備上,使用者對自己的手機、電腦,擁有最高權限,只要運用 開發者工具或抓包工具,裡面藏的所有原始碼都看得到

正確做法

  1. API再回傳資料時,應該過濾答案欄位,只回傳題目和選項
  2. 使用者答完後,前端把「使用者選了什麼」傳給後端,伺服器在後端比對資料庫後,只回傳「對/錯」「得分」

這樣 真正答案 只會留在後台,前端無法偷看