ASP.net较之以前的asp页面,在安全性方面得带了大大加强,不过如果你不够熟悉其用法,就无法将微软提供的安全性发挥得最佳。大家都知道,ASP.net页面可以通过发布的方式将编译后的页面上传到服务器,服务器端没有源代码,即使黑客攻破了网站的防御,获取并篡改有价值的数据就会增加一定的难度。那么我们在发布站点的时候又应该注意些什么呢? 发布网站时Visual studio会弹出如下的参数配置对话框: 在这里,我们主要讨论第一个选项,即:允许更新此预编译站点! 默认情况下,“允许更新此预编译站点”这一项设置成选中状态,至于要不要选中,站长是可以自定义的,那么选中与不选中有何区别呢? 如果你曾经发布过一个站点,你就会比较熟悉,一般情况下,网站项目中的所有CS文件,会自动生成一个DLL动态链接库,这就能够很好的保护网站的源代码,因为代码一般都是放在CS文件里面的,既然都生成了DLL文件,那么,上传到虚拟空间,别人就不能打开来看了! 但是,其它的文件,诸如ashx、aspx等文件,里面原来有什么就是什么,即里面的C#代码不会进行编译,别人可以打开这些文件来查看,尽管别人看不见.cs源文件中的代码,但是仍然能够看见ASPX文件里面的HTML代码或部分服务器控件;ashx这样的文件,也相当于一个cs文件,里面的代码也是能够看见的。 因此,cs文件倒是安全了,但是网站中的aspx、asxh等文件,是不安全的。对于整个网站而言,只有局部的安全,而没有整体的安全,存在较大的安全隐患,网站一旦被黑客攻破,那么将存在丢失敏感数据的潜在风险。 那么,到底有没有一种办法,让上传到站点空间的网站文件,都安全呢?微软早为我们考虑到了,"允许更新此预编译站点"可选项就是用来解决这个问题的!下面讨论"允许更新此预编译站点"可选项勾选以及不选的涵义。 1. 勾选“允许更新此预编译站点” 如果您勾选了该项,然后发布网站,那么,整个网站文件,除了所有的CS文件编译成为一个个DLL文件之外,其它的文件(如.aspx、.ashx文件),和原来的没有任何变化,里面是什么,还是什么,只要别人通过记事本一打开,里面的代码、HTML代码等,都可以让别人一览无余。 除此之外,通过此种方式发布的网站,当用户第一次访问某个页面的时候,需要经过编译,查找BUG,之后,如果没有任何错误,才能正常访问,因此,速度会相对比较慢。(第二次、第三次……访问,速度就正常了) 2. 不勾选“允许更新此预编译站点” 如果您在发布网站的时候,取消了“允许更新此预编译站点”前面的勾,那么: 1、网站里面的所有CS文件,都被编译成为一个DLL文件; 2、除了cs文件,其它的文件,诸如ASPX、ASHX等文件,也一同被编译起来,每个文件都在BIN目录里面生成一个对应的*.compiled文件; 之后,如果您通过记事本查看ASPX、ASHX等文件,里面不会看到任何的代码,就连HTML代码标记都看不见,打开这样的文件,里面只有一行文字,内容为“这是预编译工具生成的标记文件,不应被删除!” 但是,网站的访问却是正常的,不会出现任何不良的问题。 所以呢,使用这种方式发布网站,什么文件都不能通过记事本打开,里面显示的都是一行文字,因此,网站文件就非常安全了。 此外,通过此种方法发布的网站,所有内容都编译好了,打开的速度相对比较快。 通过以上的讨论,详细你已经对“允许更新此预编译站点”可选项比较熟悉了,但是,任何事情都存在两面性,不一定不勾选就一定比勾选好,读者需要根据自己的实际情况进行设置。 |