2013-01-04 41 views
1

我加載了很多JavaScript從我的數據庫驗證和服裝驗證,可以通過我的客戶上傳,所以我想驗證給定的Javscript是否有效當我在頁面上呈現它時,我正在使用MVC 3.0 Razer的視圖引擎驗證JavaScript

請幫我找到一個辦法解決它

感謝 Ashies

+0

這是很難回答你的問題的英語很糟糕。你可以重新寫嗎? – Stokedout

+2

讓您的用戶上傳JavaScript,然後執行它是一個可怕的想法。 –

+0

@AnthonyGrist我不確定,但我認爲OP說的是JavaScript存儲在數據庫中,客戶可以選擇使用它 - 但是,然後再次! – amelvin

回答

1

簡直是不建議你的任務。直接從數據庫中呈現JavaScript代碼是很危險的,因爲您正在向XSS攻擊敞開大門。

但是,是的,您可以使用JSLint正常驗證JSCode。

有一個visual studio的插件,當然可能有一種方法可以使用JSLint DLL中打包的功能,以便您可以檢查JavaScript。

這兩個帖子可能會讓你在「正確的」方向。 (我還是得說,使用戶輸入的JS代碼是根本錯誤)

http://www.codeproject.com/Articles/21438/JSLint-VS-JavaScript-Verifier-for-Visual-Studio

http://blog.outsharked.com/2011/08/sharplinter-command-line-tool-for.html

+0

+1關於JSLint和安全性的好處 – amelvin

0

JavaScript語法檢查是棘手,因爲有基於生成靜音運行時錯誤如此多的範圍如何處理原語(例如)。

有像JSLint這樣的驗證程序可用,您可以構建自己的驗證技巧。

對於javasript文件(使用jquery),如果腳本完全運行,可以在body標籤上設置一個類(「scriptVerified」) - 它可以快速告訴您腳本是否在語法上合理。但事件處理程序在事件觸發時仍然可能出錯。

@ AdiranSalazar的安全警告值得一聽。

$(document).ready(function() { 
    pageScript.Init(); 
}); 

var pageScript = 
{ 
    Init: function() 
    { 
     pageScript.CleanUp(); 
     pageScript.RegisterHandlers(); 
     pageScript.Start(); 
     pageScript.Final(); 
    }, 

    CleanUp: function() 
    { 
     //put page cleanup stuff in here 
    }, 

    RegisterHandlers: function() 
    { 
     //register event handlers in here 
    }, 

    Start: function() 
    { 
     //put page js code in here 
    }, 

    Final: function() { 
     $("body").addClass("scriptVerified"); //add class to body to say this has run 
    } 
}; 
1

我假定您正在使用Visual Studio 2010/2012。

阿德里安·薩拉薩爾說:

簡直是不建議你的任務。直接從數據庫中呈現JavaScript代碼是很危險的,因爲您正在向XSS攻擊敞開大門。

這樣說我強烈建議重新考慮你目前的設計。如果你打算這樣做,你應該看看Web Essentials,它是NuGet提供的一個插件。這有JSHint集成,它將在保存文件或在Visual Studio中構建應用程序後檢查您的Javascript。

也可下載作爲安裝程序:

http://visualstudiogallery.msdn.microsoft.com/6ed4c78f-a23e-49ad-b5fd-369af0c2107f

或2012:

http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6