2013-04-01 66 views
3

剛開始使用Highcharts。如果我將數據包含在JavaScript中的數組中,則數據可供任何人在查看源代碼時下載。當從csv文件調用數據時這將是相同的。有沒有辦法保護數據免受複製/下載?數據安全高圖

+0

我一直想知道同樣的事情。看看jsFiddle:http://jsfiddle.net/wergeld/xu5e2/,然後是這個:http://jsfiddle.net/wergeld/xu5e2/embedded/result/。第二個不顯示用於在第一個jsFiddle中生成它的JS代碼。如何做到這一點? – wergeld

+2

@wergeld,第二個鏈接並沒有真正隱藏任何東西,它只是向你展示了jsfiddle的一個不同的iframe。右鍵單擊該圖並執行「查看幀源...」 – Mark

+0

@Mark,哇。好的,它並不習慣這樣做。當您查看嵌入式頁面時,jsFiddle以某種方式隱藏了構建器js。好吧。 – wergeld

回答

1

由於HighCharts是一個客戶端JS系統,我不相信有一種方法可以安全地獲取數據。如果您只是嘗試通過AJAX調用在運行時獲取數據,則用戶可以看到該調用和響應。正如你所說的,你不能只在源代碼中填充一個變量,因爲它在那裏是可見的。

3

不,因爲HighCharts是一個客戶端JavaScript庫,所以可用的數據也可能被最終用戶使用。一旦數據到達用戶的瀏覽器,確實無法「保護」它,儘管您可以使用HTTPS,服務器端身份驗證等來至少保證原則上只有預期的用戶接收數據。

如果您需要在保持實際原始數據安全的同時可視化數據,顯而易見的解決方案是在服務器上呈現數據,並僅僅(最終)爲用戶提供圖像或其他靜態內容。但是,然後你失去了漂亮的交互式圖表。

您可能可以使用Flash或Silverlight來檢索數據,以使逆向工程的難度更大。這不能保證任何東西的安全,只會讓確定的用戶變得更難。

另一方面,用戶可以在最終圖表中看到數據。如果他們真的想下載數據,他們可以刻意識別每個數據點並創建自己的CSV文件,對吧?你需要弄清楚你的特定用例的好處,並達到適當的平衡。