簡體   English   中英

從Android應用安全地寫入遠程數據庫

[英]Safely writing to remote database from Android app

我認為我必須執行某種API,Android應用程序會將參數發送到php文件或類似文件。

我在考慮一款具有某種高分列表的應用程序。 我將如何確保通過應用程序實現提交的高分值? 說該人達到9001分。 現在,如果這僅導致某種形式的file.php?score = 9001調用,我對人們找到php位置並提交所需內容的感覺就不太安全。

關於這種問題有什么意見嗎? 謝謝。

由於您無法驗證請求的來源,因此無法確保此100%安全,但是有一種方法可以使獲取高分的難度有所提高。 從本質上講,它仍然是安全性,但是它需要深入研究實際的應用程序二進制文件,而不僅僅是查看網絡連接。

首先,為您的應用選擇一個“密碼”。 除了發送分數以外,還發送與分數關聯的密碼的密碼哈希(例如SHA-256或其他形式)。 在服務器端,重新計算與分數連接的密碼的哈希,然后檢查它是否與提交的哈希匹配。 如果不是,則拒絕分數提交。 現在,這比初始方法更安全,因為查看應用程序發出的請求並不能使您偽造分數。 但是,查看應用程序中的二進制代碼仍將允許攻擊者恢復密碼並偽造分數提交,但這非常復雜,可能足以滿足您的目的。

當然,這並不排除能夠復制分數(一旦已知正確的哈希,您可以根據需要多次提交分數)。 如果您甚至想避免這種情況,則必須按以下步驟提交分數:從服務器請求(隨機)ID號,哈希分數+ ID +密碼,提交分數+哈希,然后服務器檢查此哈希是否良好。 服務器需要記住ID號,因此編程時要多一些。 一個更簡單的解決方案是將每個分數與玩家名稱相關聯,並且每個玩家只允許一個分數。 然后,您可以哈希密碼+名稱+分數。

下午好!

最好通過POST與服務器通信。 因此,您可以將其他參數(例如,密鑰)從您的應用發送到服務器,並在其中進行檢查。

PHP示例:

<?
$key = trim(htmlspecialchars($_POST['KEY']));

if ($key == 'your_secret_string') {
   //write data to DB
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM