2013-10-30 47 views
0

我正在開發具有多種不同形式的GWT應用程序。這些表格的可見性取決於授權用戶的類型。換句話說,我要做到以下幾點:在GWT上如何安全地生成HTML頁面?

String type = rpc.getUserType(); // ask from server only ONCE 

if(type.equals("advancedUser")) 
{ 
    ContentPanel advPanel= new ContentPanel(); 
    add(advPanel); 
} 

if(type.equals("admin")) 
{ 
    ContentPanel adminPanel= new ContentPanel(); 
    add(adminPanel); 
} 

我的問題是: 從服務器獲取用戶類型只有一次,並使用這個變量無處不在安全嗎?我的意思是有沒有可能改變這個變量(如果它存儲在客戶端)?

我的朋友告訴我,GWT準備在服務器端的HTML,所以我可以安全地存儲在一個變量類型,並使用它 - 沒有人可以訪問它。

但我認爲,我必須做出RPC調用每個建設像if(userType=blah-blah-blah) add(something)之前,因爲我認爲GWT翻譯我的Java代碼的Javascript運行在客戶端和所有的變量都可以用類似ArtMoney programms的修改。

回答

1

我的問題是:從服務器獲取用戶類型只有一次,並在任何地方使用此變量安全嗎?我的意思是有沒有可能改變這個變量(如果它存儲在客戶端)?

是的,這是最可能的和可靠的解決方案。更超過我想建議,使其static

public static String USER_TYPE = rpc.getUserType(); 

該變量應該用一個值初始化最早的onModuleLoad並應在對整個應用程序。

但我認爲,我有每個建築一樣,如果之前進行RPC調用(USERTYPE =誇誇其談,等等)加入(某物)

沒有那引起的性能問題和不必要的server電話通過電線。

因爲我認爲GWT將我的Java代碼翻譯成在客戶端運行的Javascript,並且所有變量都可以用ArtMoney等程序修改。

GWT足夠安全,並與混淆選項,這使得在瀏覽器代碼不是人類可讀的編譯模塊。

這混淆獨自從所有脆弱的東西保護,還有一些其他的措施還需要採取睡覺快樂:)

我建議要經過GWT security documentation

除了所有,

同時節約或需要一個選中您在客戶端做了服務器端處理的數據進行嚴格完成,這樣就避免cn的這樣的情況。

在服務器端

if(clientsideUserType.equals(serverSideUserType)) // 
{ 
// Then only insert/process data 
} 
+0

好,感謝您分享您的觀點,我會盡量靠混淆。如果一些很酷的黑客可以解密java腳本,我可以簡單地在每個「渲染條件」構建之前添加rpc調用) – Baurzhan

+0

@Baurzhan更新了我的帖子。不要讓黑客用你的應用程序做一些很酷的事情:) –

相關問題