关于asp.net2.0的诸多问题
一:朋友们在处理以GET方式提交的参数(该参数的值为数字)时,怎样过滤和防止错误?
我 是这样做
1:先需要判断传入的参数是否为空,以免引发异常。
2:判断是否为数字。
3:限制数字的长度,因为接受的数字超过了INT类型,又将会报错。
做的比较复杂,朋友一般怎么做了?
二:ASP.NET2.0的CS文件编译后生成DLL文件,但是我的每次的名字都不一样,如果要更新的话,需要整个重新编译,并重新上传才算完整,我估计我的做法上有错误,请给我一个好的做法,可以像升级软件一样,只升级一些文件即可。
三:关于强命名的问题,我看到有人说可以防止DLL文件被替换,防止被挂马,他的意思是否是说,如果没有得到密钥,你的同名DLL文件将不能被替换?
四:浏览很多DLL文件时,可以看到它有版本号,下面还有一行作者对此DLL文件的描述,我的就只有文件名,其他版本号就是0.0.0.0,怎样生成版本号以及描述该DLL文件?
五:每一个ASPX文件都有一个对应的CS文件,如果我们把要处理的函数都写在每页对应的CS文件里,那么如果某一页的CS文件里的内容有变化,是否又要重新编译整个站点?
六:最后,我估计ASP.NET2.0应该能做到这样,就是可以不在每一个ASPX文件对应的CS文件里写代码,而是统一由几个公用的CS文件来完成站点所有功能,每次编译只需要编译那几个文件即可,升级也方便,因为这样但是我不知道是否可以?
问题较多,先谢谢各位朋友的热情回答!
------解决方案--------------------一:朋友们在处理以GET方式提交的参数(该参数的值为数字)时,怎样过滤和防止错误?
我 是这样做
1:先需要判断传入的参数是否为空,以免引发异常。
2:判断是否为数字。
3:限制数字的长度,因为接受的数字超过了INT类型,又将会报错。
做的比较复杂,朋友一般怎么做了?
#####################################################3
和你差不多,过滤严格点好
二:ASP.NET2.0的CS文件编译后生成DLL文件,但是我的每次的名字都不一样,如果要更新的话,需要整个重新编译,并重新上传才算完整,我估计我的做法上有错误,请给我一个好的做法,可以像升级软件一样,只升级一些文件即可。
######################################################
页面没什么变化,后台处理变了点的话,只要改dll就可以了 '
另外3层架构,只改变其中一些项目dll就搞定的,也可以减少维护劳动量
三:关于强命名的问题,我看到有人说可以防止DLL文件被替换,防止被挂马,他的意思是否是说,如果没有得到密钥,你的同名DLL文件将不能被替换?
###################################3
就是他替换的dll用不了撒,具体不是太了解
四:浏览很多DLL文件时,可以看到它有版本号,下面还有一行作者对此DLL文件的描述,我的就只有文件名,其他版本号就是0.0.0.0,怎样生成版本号以及描述该DLL文件?
####################################
dll是一个啥工程生成的吧?在assimblyinfo.cs里
五:每一个ASPX文件都有一个对应的CS文件,如果我们把要处理的函数都写在每页对应的CS文件里,那么如果某一页的CS文件里的内容有变化,是否又要重新编译整个站点?
#####################################
是啊.所以用三层架构,分层比较好
六:最后,我估计ASP.NET2.0应该能做到这样,就是可以不在每一个ASPX文件对应的CS文件里写代码,而是统一由几个公用的CS文件来完成站点所有功能,每次编译只需要编译那几个文件即可,升级也方便,因为这样但是我不知道是否可以?
###############################################
同样,三层架构.UI,业务,数据
------解决方案--------------------一、对参数的过滤要尽可能严格,安全第一
二、可以使用vs2005 sp1中的webapplication模式开发,这样就可以指定固定的程序集名了。
三、防止程序集被篡改,因为.net生成的dll通过反射很容易查看代码的,所以修改起来也更容易,强命名后如果程序集被篡改,则无法使用。
四、同二,如果是webapplication模式就可以在项目属性中指定,其他非网站项目直接在项目属性中指定。
五、如果cs文件有变动,是要重新编译的,除非你使用website模式,而且发布站点时用的即时编译的模式。
六、多了解一下就清楚,后台cs一般还是要写UI层的一些逻辑的。
------解决方案--------------------1.
int paraValue=0;
if(Request[ "aaa "]!=null)
{
int.tryParse(request[ "aaa "].toString(),out paraValue);
}
------解决方案--------------------1,
可以封装起来,只用写一次。
我觉的可以这样写:
string s = Page.Request.QueryString[ "aaa "];
int i = 0;
Label1.Text = int.TryParse(s, out i).ToString();
2 有插件,或者省级到sp1
3 替换了以后,主程序能识别出来不是原来的。然后应该抱错吧……具体没用过。
4 项目属性 发布标签,你看看就清楚了。
5 是的,除非你采用及时编译方式,类似以前的asp。或者以前的jsp(现在改没改不清楚)
6 不能只编译那几个文件,还是要全部编译。你想要修改方便,可以采用多层架构。参考PetShop 4.0
------解决方案--------------------一:
处理方式相同..
二
不能肯定
三
应该不是不能替换,而是替换了就无法使用
四
可以在AssimblyInfo.cs中添加
也可以在类前加特性[assembly:System.Reflection.AssemblyVersion( "1.1 ")]
五
ASP 2.0有三种编译模式,使用 aspnet_compiler 的 -fixednames 选项请求将每个 .aspx 文件编译为单独的程序集,在更新单个页面而不修改部署站点上的其他程序集使很有用的
六
不能肯定
------解决方案--------------------A1. 与asp.net无关。你可以作为更为基础的问题问。
A2. 网站上传工具很多。我使用NetLoad。个人应该多找工具,不能守着vs这张饼还会饿死。
A3. 可以。
A4. 参考楼上的答复。
A5. asp.net2.0不需要编译,直接上传源文件即可。每一个aspx都是独立的应用此策略。