网络安全 频道

深入探究URL转发中的秘密

URL转发,英文名称 URL Redirect ,很多个人用户都不约而同的选择了使用一个很简单的[URL=http://www.heibai.net]免费[/URL]子[URL=http://www.heibai.net]域名[/URL]来代替自己网站冗长的[URL=http://www.heibai.net]网络[/URL]地址。
1、什么叫 URL
转发
其实,说起他,大家都不陌生。很多人都使用过,比如你申请了一个[URL=http://www.heibai.net]免费[/URL]空间[URL=http://www.icpname.com/freeuser/yourusername]http://www.icpname.com/freeuser/yourusername[/URL],你如果认为访问起来十分不方便,就可以选择申请一个[URL=http://www.heibai.net]免费[/URL]的[URL=http://www.heibai.net]域名[/URL]转向,最常用的就是
username.126.com 的[URL=http://www.heibai.net]域名[/URL],通过在线提交表单,完成你的设置后,以后,只需要访问这个简单易记的地址,就可以转向到你的网页。
2、URL转发实现的条件
首先,我们如果想提供URL转发[URL=http://www.heibai.net]服务[/URL],就需要将需要转发的[URL=http://www.heibai.net]域名[/URL]的DNS指向都指到提供转发[URL=http://www.heibai.net]服务[/URL]的[URL=http://www.heibai.net]服务[/URL]器上,或者,干脆对某个[URL=http://www.heibai.net]域名[/URL]提供泛[URL=http://www.heibai.net]域名[/URL]解析(既添加一条*记录)。使此[URL=http://www.heibai.net]域名[/URL]的所有次级[URL=http://www.heibai.net]域名[/URL]都指向到URL转发[URL=http://www.heibai.net]服务[/URL]器。
3、URL转发实现的原理
假定我们的[URL=http://www.heibai.net]域名[/URL]是 sunwise.net
,我们来分析下面的一段代码:
Next
‘打开[URL=http://www.heibai.net]数据[/URL]库,查找 user
对应的实际地址
set conn =Server.CreateObject("ADODB.Connection")
conn.open
"driver={Microsoft Access Driver
(*.mdb)};dbq="&Server.MapPath("dns.mdb">
Set rs =
server.createobject("adodb.recordset")
sql="SELECT * FROM urlname WHERE
username="&user&""
rs.open sql,conn,1,2
if rs.eof or rs.bof then
response.write
"错误!没有找到地址!"
else
’在页面中进行跳转
URL=rs("url")
%>
">
这段代码实现的就是一个极为简单的url转发功能。代码中,我们先得到用户名,再查询[URL=http://www.heibai.net]数据[/URL]库得到对应的实际地址,然后进行了跳转。
4、URL转发存在的弱点及改进方案。
URL转发也存在其先天的弱点,比如,当一个[URL=http://www.heibai.net]域名[/URL]直接指向到[URL=http://www.heibai.net]服务[/URL]器时,我们可以通过 [URL=http://sunwise.net/bbs/]http://sunwise.net/bbs/[/URL]
来访问其中的bbs目录。但是,当使用URL转发时,我们所请求的地址就不能被正确解释。这不得不说是URL转发的一个小小的遗憾。
不过,办法总是有的。下面,我就发表一下我自己的解决方案。
首先,所谓的URL转发,不过是一个ASP页面,那,如果我们把这个页面删除,会有什么后果呢?当网站中没有任何文件时,所有访问都将被指向到HTTP404的错误页面。
这个错误页面是可以自定义的,我们就可以在这个HTTP404错误页面上做一点小小的改动。
我们分析下面代码
Next
‘打开[URL=http://www.heibai.net]数据[/URL]库,查找 user
对应的实际地址
set conn =Server.CreateObject("ADODB.Connection")
conn.open
"driver={Microsoft Access Driver
(*.mdb)};dbq="&Server.MapPath("dns.mdb">
Set rs =
server.createobject("adodb.recordset")
sql="SELECT * FROM urlname WHERE
username="&user&""
rs.open sql,conn,1,2
if rs.eof or rs.bof then
response.write "错误!没有找到地址!"
else
’对[URL=http://www.heibai.net]数据[/URL]进行整理,避免出现"//"的情况
URL=rs("url")
if
right(URL,1)="/" then
URL=left(URL,Len(URL)-1)
‘生成跳转地址
path=Replace(strURL,USER & "." &
mydomain,URL)
’在页面中进行跳转
Response.Redirect(Path)
End If
‘销毁对象
Set
rs=Nothing
conn.close
Set
conn=Nothing
%>
此时删除所有该站点下的网页文件,当用户访问时,[URL=http://www.heibai.net]服务[/URL]器就会发生HTTP404错误,将浏览器定向到此ASP文件,以实现高级的URL转发。
0
相关文章