所有文章

平台

SCALE Order 如何保護您餐廳的資料

餐廳面對的是真實的顧客與真實的金流。以下是 SCALE Order 內建的各項保護措施,從每家餐廳資料如何分隔,到登入、工作階段與紀錄如何受到保護。

重點摘要

  • 每家餐廳的資料是在資料庫本身中分隔,而不只是在 App 層面。
  • 密碼以 scrypt 雜湊處理;連續輸入錯誤會將帳號鎖定 15 分鐘。
  • 每次更新時都會輪替工作階段;若有工作階段被重複使用,整條登入鏈都會被終止。
  • 訂單、現金、點數與稽核紀錄都只能新增。

每家餐廳都有自己的獨立空間

所有餐廳都在同一個平台上運作,但由資料庫強制執行分隔。每張餐廳資料表都已開啟並強制套用列層級安全性,每個請求都在限定單一餐廳的交易中執行。應用程式使用的帳號無法繞過這些規則。

只有兩個內部角色可以為了特定且有限的工作而例外:背景作業程式,它只能列出哪些餐廳處於啟用狀態,再逐一為各餐廳執行工作;以及 SCALE 團隊的控制中心,它無法存取顧客地址、訂單位置、密碼雜湊值,也無法存取各餐廳自己的稽核日誌。

登入與密碼

  • 密碼長度為 8 至 128 個字元,以加入隨機鹽值的 scrypt 雜湊儲存,並以固定時間比對。
  • 連續輸入五次錯誤密碼,帳號會被鎖定 15 分鐘。登入不存在的帳號也會花費相同的時間,因此不會洩漏哪些帳號存在。
  • 登入嘗試也會依位址在 15 分鐘內設限:員工 10 次、顧客 60 次、新顧客註冊 5 次。所有伺服器共用這些計數。
  • 驗證碼為 6 位數,10 分鐘後失效,且只能嘗試有限次數。
  • 可以為登入與下單開啟 Cloudflare 機器人防護。

無法重送的工作階段

登入後會取得一個短效存取權杖(預設 15 分鐘)與一個更新權杖。每次更新時,更新權杖都會被替換成新的。若舊的權杖再次被使用,整條工作階段鏈都會被終止,讓遭竊的權杖無法被長期使用。

每個請求也會檢查工作階段是否仍有效,因此移除員工、變更其密碼或降低其角色權限時,該員工會在所有裝置上立即被登出。管理後台的 Cookie 無法被頁面指令碼讀取,也不會由其他網站送出。

最小權限角色

存取權限由 29 項權限組成,從讀取訂單到確認現金收款或管理員工都包含在內。業主可以任意組合這些權限來建立角色,員工也可以被限定於單一分店。任何人都無法授予自己沒有的權限,內建角色無法編輯,最後一位有效的業主也無法被移除。

管理後台會隱藏角色無法使用的功能,但這只是為了讓畫面更清楚:伺服器會在每次操作時檢查權限、分店與成員資格。

無法改寫的紀錄

訂單狀態變更、點數帳本、庫存異動、價格歷程與稽核日誌都只能新增。資料庫會拒絕任何更新或刪除,因此更正都是透過新增一筆可見的新紀錄來完成。

尊重顧客的資料

  • 訂單位置只在 App 開啟期間、經顧客同意後取得,並在 180 天後刪除。
  • 顧客可以從網站或 App 刪除自己的帳號。其地址、位置、裝置、通知與密碼都會被移除,個人資料也會被匿名化。
  • 為了防止同一人重複領取新顧客優惠,只會保留其手機號碼與電子郵件經過保護的指紋。
  • 平台

    店長 App 與每日打烊報表

    店長 App 將您的餐廳管理後台放進 Android 手機,每筆新訂單都會通知您,還有開店與打烊提醒,並為每一天儲存打烊報表。

  • 會員忠誠與成長

    會員點數如何運作:累積、生效、折抵與到期

    點數方案唯有規則可預期,才能建立信任。以下完整說明 SCALE Order 如何累積、保留、生效、折抵與讓點數到期,以及背後的帳本為何無法修改。