在经典ASP中存储连接字符串的位置在哪里?

5
在ASP.NET中,我可以将连接字符串存储在web.config文件中,同样地,我需要在经典的ASP中将连接字符串或某些配置值存储在某个文件中。
我该如何做?为了实现这一点,我需要使用XML文件并将连接字符串存储在其中吗?
最佳实践是什么?
3个回答

6
使用 globa.asa 在应用程序对象中设置值。

那在该应用程序内运行是可行的,但如果企业中有多个应用程序,则无法跨越运行。 - Matthew Groves
1
配置通常是基于每个应用程序的(包括 asp.net web.config)。从安全角度来看,最佳实践也是为每个应用程序使用不同的数据库用户帐户。 - Joost Moesker
如果我的每个客户端都有一个连接字符串呢?他们每个人都访问Azure SQL数据库。 - Onaiggac

5

您可以创建一个包含连接字符串作为字符串变量以及其他配置信息的ASP文件,然后将其包含在连接到数据库的文件中。


这应该是一个 .inc 文件还是 .asp 文件? - nimi
3
把它变成一个 .asp 文件。在遥远的过去,我看到过一台服务器配置成这样的方式,即 .inc 文件不会被 asp 运行时解释,导致服务器下载 .inc 文件的源代码。如果是 .asp 文件,这种情况发生的可能性将大大降低。 - Paul Degnan
@Nimesh和@Paul,正如Joost在他的回答中建议的那样,使用global.asa似乎是更好的解决方案。它可以被所有页面访问,而无需包含任何内容... - Gabriele Petrioli

2

我最近看到的一句话...

不要做傻事,比如把密钥存储在Web服务器上的虚拟目录(例如web.config)中的文件中。由于漏洞,Web服务器已知会意外地允许文件下载。例如,在过去,通过将Web浏览器指向“page.asp::$DATA”而不是page.asp,可以窃取经典ASP页面中的连接字符串。这会欺骗IIS以为请求是静态文件,因为.asp::$DATA不匹配其脚本映射中的任何内容。但是,后缀::$DATA对操作系统有特殊含义:它表示该文件的默认NTFS流,这就是正常读取文件内容时获得的内容。换句话说,要求文件系统提供page.aspx::$DATA的内容等同于要求它提供page.aspx的内容。因此,IIS将提供ASP页面的源代码而不是解释为脚本。多年来一直会出现很多这样的恶作剧,但大多数人都同意最好将敏感文件存储在Web服务器上任何虚拟目录之外。更好的方法是将敏感文件放在与虚拟目录所在位置不同的分区中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接