2012-10-15 25 views
4

如果我想從我的模型中設置一些JavaScript變量,那會是一種安全的做法嗎?例如:使用剃刀設置JavaScript變量內聯,它是良好的做法/安全嗎?

<script type="text/javascript"> 
    var myVariable = '@Model.myVar'; 
</script> 

這是一個好習慣嗎?我不能想到一個更好的方法來實現它,除了可能做隱藏的輸入,但這似乎是相當多的工作。我只是不知道這是否容易受到攻擊,或者是否有這樣的事情可以忽略。

+0

最好使用隱藏的輸入法,然後您可以將JavaScript從視圖中分離出來。 –

回答

5

我認爲這有幾個問題。基本上,你是緊密耦合你的JavaScript到你的頁面或視圖。我認爲自己是一個堅實的.NET/C#/ MVC開發人員,但是卻是一個初學javascript的人,這正是我追求的設計類型,直到最近。在過去,我會在我的觀點中插入各種javascript,並大量使用Razor。最後它可以工作,但它會導致標記和腳本的緊密耦合,並最終產生難以維護的環境。

一個更好的方法是改爲內聯調用JavaScript函數。差別很小,但它會強制這兩個領域的分離。

<script type="text/javascript"> 
    MyFunction('@Model.myVar'); 
</script> 

您還可以通過Razor隱藏輸入字段,跨度等內聯值,並將它們暴露給您的JavaScript。

1

它應該是安全的,因爲輸出在剃刀中默認編碼。

但是,如果您輸出的值是用戶可以更改的值,則必須確保已驗證它(服務器端)以停止任何XSS。

0

你很好。這樣做不會引入任何漏洞。如果已經存在漏洞,不會阻止漏洞,但這肯定不會再增加。

相關問題