假設你想上傳一個「測試版」,並且你有信任問題。 你會如何去添加到期日期?硬編碼Web應用程序(ASP.NET)的失效日期?
我想到了硬編碼的到期日期 - 但是任何人都可以反編譯/重新編譯.NET的DLL。
後來我想,也許我應該在自己的文件,應用程序迭代並刪除它們。但是,然後,IIS工作人員將在刪除重要的DLL後停止,我們將無法刪除其他人。更何況我們需要在包括BIN在內的所有文件夾上設置寫入權限。
呃...有什麼想法?
假設你想上傳一個「測試版」,並且你有信任問題。 你會如何去添加到期日期?硬編碼Web應用程序(ASP.NET)的失效日期?
我想到了硬編碼的到期日期 - 但是任何人都可以反編譯/重新編譯.NET的DLL。
後來我想,也許我應該在自己的文件,應用程序迭代並刪除它們。但是,然後,IIS工作人員將在刪除重要的DLL後停止,我們將無法刪除其他人。更何況我們需要在包括BIN在內的所有文件夾上設置寫入權限。
呃...有什麼想法?
你可能想使用的日期爲一些有意義的輸入變量深深的代碼裏,喜歡用「蜱超過閾值」來計算的可擴展性的一些計劃減少,全部設置在不同的時間閾值,將延遲或東西。如果你把它們放在不同的地方並用.cs標註,這些對你來說很容易就可以在需要的時候刪除,但是從dll中刪除它們太昂貴了。
我非常喜歡這個想法。這是完整解決方案的一步... –
添加硬編碼的日期檢查的地方,並obfuscate您的應用程序。
更新:
我不會說,會很容易找到混淆裝配的日期檢查,特別是如果你使用一些商業工具。當然,這不可能100%安全,我沒有任何經驗調試/破解混淆的程序集,但花了一些時間搜索商業混淆器,他們可以做什麼。
除此之外,您可以使用事實,即您的應用程序運行連接到互聯網,您可以檢查一些外部資源,當然這可能很容易被嗅探,但你可以編寫一些你的應用程序的基本部分是腳本放該腳本在其他服務器上加密。然後,您的應用程序應該下載,解密並執行該腳本,因此如果從遠程服務器上刪除它,將很難再現該功能。第三方有可能下載腳本並在不可用時提供腳本,請注意這一點。也許你可以使用Rosyln並使用你的c#代碼來代替那個腳本。
我沒有做類似的事情,也許有一些更多的問題,它只是一些越過我的腦海,所以如果你想要去這樣做你的研究,請:)
這對我來說還不夠,因爲日期檢查很容易找到。但是,也許我會結合刪除最重要的文件。我會睡在那,也許會出現一個更完整的解決方案。 –
通過信任問題,你的意思是你無法託管一個Windows服務? – IrishChieftain
我的意思是我們需要臨時託管某人的服務器,我們不完全信任的人。 –
如果你不相信自己不這樣做,簡單的說,不要把自己放在一個地方,在那裏你要向你不信任的人分發一些重要的東西,如果他們決心打破你的保護並抓住他們將要做的事情。 – RhysW