2016-08-26 18 views
0

有沒有一種方法可以向訪問者證明網頁服務器上託管的開源服務器端應用程序完全沒有修改(沒有惡意代碼)?該應用程序必須在服務器端,客戶端是不可能的。是否有任何託管提供商確認只有未修改的腳本正在運行?有沒有一種方法可以向訪問者證明服務器端以前做了什麼?

例如確認一個隨機數發生器不存儲它的計算值。

回答

0

不,沒有客戶端用戶可以保證服務器是「沒有惡意代碼」。事實上,您可以在沒有網站本身被感染的情況下託管一個網站,同時讓惡意程序在您不知情的情況下在您的服務器上做其他事情。如果您沒有將代碼寫入可執行文件並執行它,則不能保證它不是惡意的。

0

你應該縮小你的問題。首先,就像傑克所說的,服務器可以向其他人(也就是說,發送垃圾郵件)做一些惡意的東西,而不會與訪問者發生任何互動。所以,你可以問的是:「用戶可以確保運行腳本不會對訪問者數據做任何錯誤,或者只要最初的開放源碼腳本不會對它們進行攻擊?」

但這還不夠窄。比如說,腳本從一些高級模式(這是用戶的輸入)生成一些代碼,並且生成是在服務器端完成的。比你不能確定輸出的代碼不是惡意的,除非你之前沒有輸入完全相同的東西,並得到不同的輸出(如果你有相同的輸出,它不會告訴任何事情,因爲惡意代碼可能是僅插入一些輸入)。

可以檢查的是,如果http響應是相同的(相同的html和其他資源作爲響應)。但要做到這一點,必須存儲以前的答案,除非有客戶端應用程序,否則無法以非技術性方式完成。而且,當人們認爲響應是絕對安全的時候,唯一的情況是至少與服務器沒有進一步的交互(ajax調用等)並檢查這不是一項簡單的任務。

所以實際上,你必須添加一個客戶端應用程序,即使在這種情況下,可以有非常罕見的情況下,當它可以絕對確定服務器是好的。畢竟,如果服務器端沒有改變(沒有存儲數據?),創建一個客戶端應用程序是很自然的。

如果您縮小主題,您可能會得到更有幫助的答案:您的服務器端應該做什麼?

相關問題