亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將狀態存儲在 golang 二進制文件中

將狀態存儲在 golang 二進制文件中

Go
鴻蒙傳說 2023-07-17 16:35:18
我正在為客戶開發一個本地解決方案,機器上沒有任何控制和互聯網連接。該解決方案是根據所購買許可證允許的請求(REST API 調用)數量進行貨幣化。因此,目前我們將請求計數存儲在文件系統本身的加密文件中。但這個解決方案并不完美,因為文件可以復制到某個地方,然后在請求配額結束時替換。此外,如果文件被刪除,則需要支持人員進行手動干預。我正在尋找一種解決方案,以二進制形式存儲狀態/數據并在運行時更新它(考慮在二進制本身中更新的使用計數)尋找更好的方法。二進制文件也應該從之前存儲的狀態開始有辦法做到嗎?PS我知道寫入二進制文件并不能解決問題,但我認為它會通過增加可以存儲狀態的位置的排列和組合數量來增加難度,因為您可以更改可執行文件這不是常識如果有人試圖擾亂系統,這將是尋找狀態的最后一個地方(默默無聞的安全性)
查看完整描述

3 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

有辦法做到嗎?

不。

(至少沒有官方的、可移植的方式。當然,您可以修改二進制文件并更改例如數據或 BSS 段,但這很困難,依賴于操作系統,并且不能解決您的問題,因為它與外部文件具有相同的問題:您可以保留原始可執行文件并重新開始。有些事情根本無法從技術上解決。)


查看完整回答
反對 回復 2023-07-17
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

這是您嘗試執行的操作(不是寫入可執行文件)的解決方案,該解決方案將擊敗文件的隨意復制。

一種可能的方法是定期將請求計數和當前系統時間寫入文件。該文件甚至不需要加密 - 您只需要生成數據的哈希值(例如使用 SHA2)并使用私鑰對其進行簽名,然后附加到文件中。

然后,當您(重新)啟動服務時,使用您的公鑰讀取并驗證文件,并檢查自寫入文件的時間以來是否已經過去太久。請注意,安裝時必須寫入一些初始文件,并且您的服務需要持續運行 - 只允許短暫重新啟動。您還可能會驗證該時間不是將來的時間,因為這表明有人試圖規避系統。

當然,這種方法存在一些問題,例如客戶端擺弄系統時間,甚至調試代碼以查找私鑰和其他可能的密鑰。希望這些措施足以起到威懾作用。此外,如果服務或系統關閉很長一段時間,則需要某種手動干預。


查看完整回答
反對 回復 2023-07-17
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

如果您的其余 API 在您的控制范圍內,并且是您要貨幣化的部分,那么您肯定會在此時過濾許可的可能是某種證書身份驗證或 API 密鑰,然后您可以保留并依賴該 API您可以控制的一面,然后無論它是在平面文件還是數據庫等中都沒關系,因為您可以控制它。



查看完整回答
反對 回復 2023-07-17
  • 3 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號