4

如果我想从我的模型中设置一些 javascript 变量,那会是一种安全的做法吗?例如:

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

这是一个好的做法吗?除了可能进行隐藏输入之外,我想不出更好的方法来真正做到这一点,但与此相比,这似乎工作太多了。我只是不知道这是否容易受到攻击,或者这样做是否有一些我忽略的东西。

4

3 回答 3

5

我认为这有几个问题。从根本上说,您将 javascript 与您的页面或视图紧密耦合。我认为自己是一个可靠的 .NET / C# / MVC 开发人员,但也是 javascript 的初学者,这正是我直到最近才追求的设计类型。过去,我会在我的视图中内嵌各种 javascript 并大量使用 Razor。最后它可以工作,但它会导致您的标记和脚本非常紧密地耦合,并最终产生一个难以维护的环境。

一个更好的方法是改为对 javascript 函数进行内联调用。差异是微妙的,但它将强制将这两个区域分开。

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

您还可以通过 Razor 在隐藏的输入字段、跨度等中嵌入值,并将它们在那里公开给您的 javascript。

于 2012-10-15T19:49:03.890 回答
1

它应该是安全的,因为输出默认在 razor 中编码。

但是,如果您输出的值是用户可以更改的值,则您必须确保它已经过验证(服务器端)以停止任何 XSS。

于 2012-10-15T19:39:15.537 回答
0

你这样做很好。这样做不会引入任何漏洞。如果它们已经存在,则不会阻止漏洞的出现,但这肯定不会再增加。

于 2012-10-15T19:40:43.953 回答