2013-06-22 29 views
0

注意:我一直無法在網站上發現任何疑問(如果存在)將其作爲複製品關閉啓用用戶輸入javascript代碼

對於外面的應用程序,我們有一個基於瀏覽器的客戶端使用JavaScript。我們的應用程序遵循客戶端服務器體系結構,但僅部署在前提下,即不暴露於Web。 我(使用javascript)有點類似,在基於桌面的應用程序(如MATLAB)提供

  1. 是否安全,允許用戶腳本想着用戶提供有限的腳本支持的。
  2. 什麼是落實安全的方式(EVAL,利用IFRAME等)
+3

用戶無論如何都可以編寫腳本,他不必問你。您的網站運行在_his_計算機上的應用程序中,他可以運行用戶腳本。至於安全 - [有一種方法(網絡工作者)](http://stackoverflow.com/questions/10653809/making-webworkers-a-safe-environment)。然而,它涉及IE10 +(或另一個現代瀏覽器)(使用webworker與白名單) –

+0

@BenjaminGruenbaum Yhanks如果它是不可能使用網絡工作者什麼是下一個最安全的替代 – Gaurav

+0

下一個最好的事情可能是[caja](https: //code.google.com/p/google-caja/)。另一種選擇是讓用戶在虛擬機中運行JS(這會讓腳本變慢,並且很難與用戶代碼交互,但如果我是你,我會完全避免它。 –

回答

1

從安全的角度來看:在網頁上運行腳本是沒有問題的,用戶已經可以做到這一點按f12開放控制檯。

問題是,如果您允許用戶將js保存到您的db,然後由另一個用戶在頁面上加載。

想象一下,如果您的評論系統允許script標籤,潛在惡作劇現在可以執行用戶可以執行的任何功能。

甚至錨標記<a href="javascript:pageFunction()">click on me</a>

如果它只是一個用戶,我將腳本追加到身體。

var scr = document.createElement("script"); 
scr.textContent = 'alert("hi")'; 
document.body.appendChild(scr);