我是网络编程的新手,对ASP.NET C#中的代码有疑问。有人看到它里面的东西有多安全?我问的原因是我正在链接这个网站的程序要求我创建一个接收我的管理员凭据的对象(它在后台执行了数千次,或者我只是提示输入信用)。它使用凭据动态创建内容。我99.99%肯定将我的凭据硬编码到页面是非常不安全的,但我想我会问。
答案 0 :(得分:4)
保护文件和原始aspx文件背后的代码不被Web服务器检索,因此只要您控制控制台和文件共享访问服务器就相对安全。
尽管如此,它并不算真的安全。您应该将站点的应用程序池设置为在特定帐户下运行,然后为该帐户授予必要的权限。使用普通用户帐户获得服务被认为是不好的做法。每项服务都应拥有自己的帐户,权利最少。
答案 1 :(得分:3)
您应该将您的凭据放在web.config中(或者您可以将它们移动到单独的文件中,如AppSettings.config或ConnectionStrings.config等)。服务器将不应该提供这些服务。
这可能会有所帮助: http://msdn.microsoft.com/en-us/library/4c2kcht0(v=VS.100).aspx
这告诉您如何进一步加密这些,以便它们不存储纯文本密码等: http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx
答案 2 :(得分:3)
在通过HTTP发送页面之前编译ASP.NET页面。这是安全的。但是,如果用户可以访问文件系统,那么您手上还有另一个问题。
答案 3 :(得分:2)
这是“安全的”。 IIS(默认情况下)不提供.cs文件。
另一个选择是预编译站点,然后将.aspx文件放在Web服务器上。
答案 4 :(得分:1)
将敏感信息放入ASP.NET中的.cs文件默认情况下不是一个危险的过程,因为ASP.NET不允许从客户端访问.cs文件(如果你没有明确地更改它),但是,确保如果出现服务器错误,自定义错误报告模式不会将代码行发送到客户端(这在调试时非常有用,并且在向公众发布时极其危险)或任何人都可以如果在这些行附近抛出异常,请阅读您的敏感信息。
答案 5 :(得分:1)
这里有各种级别的“安全”。
是的,IIS配置为不提供.cs文件或.config文件。也就是说,有attack vectors证明成功地让IIS将这些文件传递给邪恶的行动者。
首先,我不会将.cs文件部署到服务器。如果可能,将网站转换为Web应用程序并将其部署为已编译。当然,.net代码可以是decompiled(and here);所以你也应该看看obfuscation。然而,即使obfuscated code can be decompiled,但通常更难阅读。 ;)
请注意,每个级别都不是真正“安全”。这只会让它变得更加困难。
真正的答案是根本不将凭据存储在服务器上,并要求客户端通过加密传输提供凭据。当然你可以将它们缓存在内存中,但即使是that has proven insecure to those with physical access。
在一天结束时,问问自己钥匙的价值是多少,以及您可以投入多少资金/时间来保护系统。某处通常存在平衡。