2011-04-12 87 views
2

我們有一個應用程序,我們從一個產品設計工具中提取一些機密信息。因此,我們使用HTTPS作爲通道,並且在將請求參數和一些數據發送給Web服務之前,我們正在對其進行加密。所以,一切似乎都很好。在Flex 3中實現加密有什麼最佳方法嗎?

但是,當我們給安全審計的應用程序時,他們發現我們已經在源代碼中對加密密鑰進行了硬編碼。他們使用Sothink SWF Decompiler來查看我的SWF文件。他們抓住了關鍵並對此提出了擔憂。

我們使用Flex 3(SDK 3.4)開發了這個應用程序。有沒有最好的方法來使用密鑰,而不是在源代碼中進行硬編碼。如果有人遇到這種問題,請告訴我。

任何人,請建議我在SourceCode中使用密鑰而不是硬編碼的最佳方式。

這裏是我的示例代碼:

var currentResult:String = ""; 
     var strDataToEncrypt:String = ""; 
     var kdata:ByteArray; 

     var todayDate:Date = new Date(); 

     kdata = Hex.toArray(Hex.fromString("secretKey here")); 
     strDataToEncrypt =username.toUpperCase() + "#$#" + password + "#$#" + todayDate.getTime().toString();   
     var data:ByteArray; 
     data = Hex.toArray(Hex.fromString(strDataToEncrypt)) 
     var name:String = "des3-ecb"; 
     var pad:IPad = new PKCS5; 
     var mode:ICipher = Crypto.getCipher(name, kdata, pad); 
     pad.setBlockSize(mode.getBlockSize()); 
     mode.encrypt(data); 
     currentResult = Base64.encodeByteArray(data); 
     var token:String = currentResult; 

回答

2

Flash沒有完整的保護功能。你的鑰匙必須要麼在代碼中,要麼在外部加載,並且在某些時候任何有足夠決心的人都能夠得到它們。你所能做的就是讓這個過程變得如此複雜,以至於不值得冒險。

看一看這個問題的辦法,使你的源更難反編譯和閱讀:How to protect swf file from being decompiled?

+0

我曾嘗試過幾個混淆器和加密器。仍然Sothink反編譯器能夠反編譯它。有什麼好的混淆器和加密器可用?請建議我幾個。 – Dinesh 2011-04-13 10:17:50

0

不要把你的數據作爲URL參數。發送一個帖子請求。

如果這是不可能的,你可以嘗試用公鑰實現一個方案。但要小心,你實施錯誤的可能性很高,導致更大的安全問題。

+0

我使用後只用HTTPS通道。但是他們仍然希望我們在將數據發送到服務器之前對其進行加密。因爲我們正在交換一些產品設計相關的信息。 – Dinesh 2011-04-12 08:21:00

+0

好吧...然後看看PKI ..​​或diffie hellmann或類似的東西..但恕我直言,它沒有任何意義,如果你沒有安全的博士學位,你只會造成安全問題。因爲你的實現總是比SSL更弱。 – duedl0r 2011-04-12 08:30:07

+0

這個swf在哪裏執行?在可信主機上?然後使用vpn/ssl或類似的東西。如果它在不受信任的主機上,則根本沒有任何安全性。在任何情況下都會存儲純文本。 – duedl0r 2011-04-12 08:36:13

相關問題