为了在MVC5下的?.
文件中使用C#6功能(如.cshtml
),您need to include csc.exe and related files in your website's bin folder when you deploy it。好的,我能理解其中的原因。
然而,现在这意味着我的网络服务器上有一个完整的C#编译器,具有与网站用户相同的权限。这让我犹豫不决 - 理论上,攻击者可以使用它来运行任意代码,就像它是我的网站一样。
这实际上是一个有效的安全问题吗?
我可以看到双方:一方面,你可能需要能够执行任意代码已经,以便能够将任意代码传递给csc可执行文件。另一方面,通过运行我们永远不想写的代码,我可以看到对它的访问被用来访问内部网站设置(比如数据库连接字符串)。
我应该担心,还是认为这是安全的?
答案 0 :(得分:2)
据我了解,MVC Razor视图实际上是任意C#代码,在任何更改后都会根据需要重新编译。
因此,任何有权访问网站服务器的黑客都可以在任何版本的MVC中运行任意C#代码。
我同意这感觉就像风险一样,因为它是,但另一方面,你可以在不重新发布整个网站的情况下更改视图。