我已經創建了一個成功使用外部jar文件的GWT項目(請參閱GWT - Using external jars/Java Projects by Lars Vogel和Adding external jar in GWT)。GWT中外部jar文件的安全
當我使用這樣的庫文件時,編譯項目並將其上載到AppEngine時會發生什麼? jar文件是按照原樣上傳的,還是首先被編譯成別的東西?如果是前者,是否有沒有我的控制權下載的安全風險?
我已經創建了一個成功使用外部jar文件的GWT項目(請參閱GWT - Using external jars/Java Projects by Lars Vogel和Adding external jar in GWT)。GWT中外部jar文件的安全
當我使用這樣的庫文件時,編譯項目並將其上載到AppEngine時會發生什麼? jar文件是按照原樣上傳的,還是首先被編譯成別的東西?如果是前者,是否有沒有我的控制權下載的安全風險?
讓我們放下「google-app-engine」部分,這裏沒關係。您在GWT中使用庫,在客戶端。 App Engine是服務器端,沒有直接連接到GWT(但由於體積限制,使用像GWT這樣的客戶端執行是非常有用的)。
您在GWT中使用的所有內容都將被編譯爲JavaScript,並傳輸到客戶端並在此處執行。很明顯,你無法控制結果以及客戶用它做什麼。
但它會接近不可讀。另外,客戶端本身並沒有獲得JAR,他沒有得到JAR內的所有東西。
因此,真正重要的是,如果庫的許可證允許,並且庫代碼中只有服務器端使用的祕密。
其實他的的回答不太正確。 「谷歌應用程序引擎」 - 這裏很重要。從技術上講,GWT編譯和混淆了它需要的所有Java代碼。它將所有不需要的東西去掉。因此,從GWT生成的JavaScript中,確實很難重建或甚至認識圖書館。但事實證明,如果您使用Eclipse插件來部署應用程序,appcfg會將各種隨機內容上傳到AppEngine服務器,有時包括項目的整個Java源代碼(包括客戶端代碼)。
要查看部署時上傳的內容,請在上載運行時檢查系統的temp
目錄。您將在那裏找到一個AppEngine staging目錄,其中包含要發送的所有內容。
爲解決此方面的建議,你可以參考的答案,我問前面一個問題:Removing unwanted uploads from AppEngine deployment
我沒有檢查什麼是所有不需要上傳的文件是否在實際上目錄結束可以從互聯網直接訪問。