2011-10-25 152 views
4

我已經創建了此Web應用程序,並且我創建了此API。爲了這個例子,讓我們保持簡單:防止API「欺騙」或「黑客入侵」

我的應用程序需要知道用戶擁有多少「積分」。 api有一個調用get_credits返回{credits:1000}

現在,我該如何防止某人使用hostfile(或其他方法)創建自己的返回{credits:2000}的api。

我想插入某種類型的散列,但因爲它是JavaScript,散列很容易從源代碼中提取。我猜想,握手也是一樣。

那麼,我該如何使api足夠安全?

+1

該網絡應用程序是由你控制的?還是API?或兩者?用戶如何影響您的Web應用使用的API? – bdares

+0

謝謝你們,我知道我不能相信應用程序或用戶,但我希望有某種我還沒有想到的方式。我讚賞所有的反應。這是一種遊戲,其中信用額度決定可用內容,所以我必須信任該應用來確定信用真實性。我會嘗試使用一些混淆和一些至少使其儘可能困難:)謝謝! – nizzle

回答

0

如果是客戶端,您可以做的事情不多 - 盡最大努力。但是你必須確保在回覆郵件後驗證回覆。永遠不要相信用戶:-)

2

你必須以不同的方式去做,才能擁有一個非常安全的應用程序。你不應該信任該應用程序,由最終用戶,因爲也許用戶或黑客可以修改代碼。

因此,我建議在服務器上保留所有購買等。因爲我現在對你的系統沒有多少幫助,所以我不能幫你。

如果對於每個項目由服務器生成散列,這個散列可以允許用戶向其他用戶顯示他真的購買了該項目。

請注意,這個哈希值必須很長且很獨特,否則用戶可能會對它們進行粗暴處理。

我希望你明白我的,我的回答可以幫助你;-)

0

我現在要告訴你我有多麼系統正常工作。 爲了在遊戲中獲得積分,我做了一個ajax請求來加載它們。 ajax請求調用一個簡單的php頁面,其中有一個「echo $ credits;」。所以,這是不可能的。如果有人修改客戶端信用,當他們要求一份禮物時,我會用php檢查服務器端信用以確保它們是合法的:P - 請考慮檢查您的系統是否容易受到mysql注入攻擊,以防止有人會黑客你信用系統:D

+1

你可以用提琴手攔截呼叫並返回你想要的任何東西 –