2014-12-30 72 views
1

我正在嘗試Android端點示例應用程序。據我所知,我們應該爲谷歌應用程序引擎上的每種方法實施授權(如下面的代碼)。在應用引擎上實施授權的原因是什麼?

/** 
* Provides the ability to insert a new Score entity. 
*/ 
@ApiMethod(name = "scores.insert") 
public Score insert(Score score, User user) throws OAuthRequestException, IOException { 
    ... 
} 

我想知道(作爲一個初學者),如果我不實現這種授權的方法與我的後端應用程序可以有人亂?他們可以訪問數據存儲並查看數據庫或使用查詢訪問存儲在數據存儲中的信息嗎?它會導致什麼樣的安全缺陷? 這樣我就可以瞭解應該採用哪種方法來實施授權。

還有一點是Index.html,我認爲,我不需要。應用引擎自動創建這個,但我只想在Android上運行這個應用程序。 我可以刪除嗎?還是我應該刪除它?

回答

0

如果你需要識別一個用戶,你應該在方法的參數列表中添加User參數。如果方法的邏輯返回任何用戶的相同結果,則不需要用戶認證,但這樣您可以允許每個人在沒有任何認證的情況下調用您的方法。

如果您設計好端點,則無法訪問數據庫或查詢數據庫。只限制端點方法返回的內容。

還有一點是Index.html,我認爲,我不需要。應用引擎 會自動創建,但我只想在Android上運行此應用。 我可以刪除嗎?還是我應該刪除它?

如果它仍然編譯並在後端運行,爲什麼不呢。當您在瀏覽器中打開您的應用程序時,會顯示index.html。 https://appname.appspot.com。如果您不想顯示任何內容,您可以隨時提供空白文件。

+0

感謝您的回答。那麼servlet如何獲得blob上傳網址?因爲我可以用網頁瀏覽器和鏈接激活它們。這是一個安全問題嗎? – savante

+0

您也可以使用瀏覽器或curl或wget實用程序調用任何端點方法。如果你設計得很好,根本不是安全問題。例如,從應用程序內下載一些高級內容可以這樣實現:調用端點方法(oauth protected)以獲得高級資源的唯一標識符,檢查用戶是否有權下載內容,然後調用該方法以使用下載blob這個標識符。這樣,只有符合條件的用戶才能下載優質內容。 – tomrozb