我试了试,主要表现是:
先到该站网页的某一链接( 指向该站内的/xx.jpg), 右键"从新窗口打开...",
很正常, 出现该链接指向的XX.jpg.
但是从右键复制URL地址后, 重新开一个IE窗口, 粘贴URL, 回车, 获取 xx.jpg出错404.
仔细查看了前一网页的HTML代码, 无任何 脚本 JAVA VBScript 等. 非常正常.
本机未出现任何cookie.
我用我的PERL ENV.pl获取所有参考书上所写的客户端变量, 用二种方式试试,
得出的结果都是一样..
我很惊讶, 那么这是怎么实现的? (唯一可能性是重编了socket)
请问如何实现? 或者请讲讲原理.
11 个解决方案
#1
我是用JSP和Servlet的,不过我想都应该类似。应该是建立一个Session然后再用户登陆后在Session中加入一个标志,这样在进入需要保护的页面是判断这个标志是否存在,或者用cookie来实现也行。
#2
你说的这种方法是用来保持客户端状态的. 需要登录.建立session后, 开另一个IE窗,是同样能保持状态的.
不是我说的内链接保护.
因为我说过了前一页是标准的HTML3.0源码,里面什么也没有.并无任何调用jsp及cookie.且网站内部的HTML大多是别的用户动态编写的,不可能有任何编写的机会.
我想问:有没有底层的变量可以识别客户端的"history"?
不是我说的内链接保护.
因为我说过了前一页是标准的HTML3.0源码,里面什么也没有.并无任何调用jsp及cookie.且网站内部的HTML大多是别的用户动态编写的,不可能有任何编写的机会.
我想问:有没有底层的变量可以识别客户端的"history"?
#3
session的建立并不一定要登陆呀,那还不全在于你的意愿么,只要你在用户登陆首页时建立一个session,然后在后续的页面中进行校验不就行了么,我想他总不能连首页都不能登陆吧,限制也是限制其它页的访问,这样客户端肯定只是HTML,至于你说没有Cookie我想不大可能吧,http是无状态的协议除了用Cookie和基于Cookie的session或url带回数据或者form数据隐藏不可能靠其他的方法来实现这样的功能的吧。
#4
你讲的非常有道理,但我想应该没有session. COOKIE是肯定没有的.
因为我直接请求失败的是.jpg文件,服务器能不能在.jpg上验证session?
我做了这些:在该服务器上临时建了一个HTM,先记页面的URL,HTM后缀,该页无任何内嵌的标记.
先断开网络,再拨号上网.清理了cookie.
马上进入该页,(而这一页根本就是刚刚我临时自建的HTM),就可以点击下一步的该页的链接图片,获得成功.查看自身机器内的cookie,未发现新的cookie.
直接在IE里输入该图的url路径,获取失败.
我想:可能性会不会有以下可能:
1,服务器上对任意后缀的文件都建了一个保护机制(内链接保护),有点象有些服务商的免费空间的banner条,你在你自己的html代码里不写任何代码,也会出现服务商的banner. 我映象中NT的internet服务器管理项好象有点之类的东西(好长时间没用NT),然后,在任意文件上加了一个自动的session? 但问题是.jpg上也可以验证session?
2 ,在socket编程底部,是否有传递IE的'history'变量,即"后退"项?
自编WEB服务器的大有人在.但我对这些底层的东西只了解了表面的东东,还不会.
注:谢谢xexplorer. 5点
因为我直接请求失败的是.jpg文件,服务器能不能在.jpg上验证session?
我做了这些:在该服务器上临时建了一个HTM,先记页面的URL,HTM后缀,该页无任何内嵌的标记.
先断开网络,再拨号上网.清理了cookie.
马上进入该页,(而这一页根本就是刚刚我临时自建的HTM),就可以点击下一步的该页的链接图片,获得成功.查看自身机器内的cookie,未发现新的cookie.
直接在IE里输入该图的url路径,获取失败.
我想:可能性会不会有以下可能:
1,服务器上对任意后缀的文件都建了一个保护机制(内链接保护),有点象有些服务商的免费空间的banner条,你在你自己的html代码里不写任何代码,也会出现服务商的banner. 我映象中NT的internet服务器管理项好象有点之类的东西(好长时间没用NT),然后,在任意文件上加了一个自动的session? 但问题是.jpg上也可以验证session?
2 ,在socket编程底部,是否有传递IE的'history'变量,即"后退"项?
自编WEB服务器的大有人在.但我对这些底层的东西只了解了表面的东东,还不会.
注:谢谢xexplorer. 5点
#5
请教xexplorer:
如果一个iE窗口里获取一个HTML网页后,建立了一个session,然后在未过期之前,点击一个.jpg的缩略图,获取.jpg成功.
回退.迅速重现了刚才HTML页面.
在当前的窗口里输入刚才的.jpg文件URL,获取出错.
再回退.迅速重现刚才HTML页面.
在当前窗口再按一下刚才.jpg的缩略图,获取404错误.
回退,重现html.
选择其它.jpg的缩略图,获取成功.
此时session是保持着呢,还是没保持着?
如果一个iE窗口里获取一个HTML网页后,建立了一个session,然后在未过期之前,点击一个.jpg的缩略图,获取.jpg成功.
回退.迅速重现了刚才HTML页面.
在当前的窗口里输入刚才的.jpg文件URL,获取出错.
再回退.迅速重现刚才HTML页面.
在当前窗口再按一下刚才.jpg的缩略图,获取404错误.
回退,重现html.
选择其它.jpg的缩略图,获取成功.
此时session是保持着呢,还是没保持着?
#6
刚才我在自己的机子上试了试,我先把cookie删掉,然后访问我自己机器上的server建立一个session,结果我发现我的机器上竟然也没有cookie,呵呵,奇怪吧。而且不管什么Web server我想它都不会为每一个文件连接建立一个session的,那样的话服务器早该被拖死机了。我没有研究过ie的行为,不过我想它不会用http通信以外的方式与web服务器联系的,在http数据报中不会包含history变量的,你可以看看http的报文。
GET /aaa.jpg HTTP/1.0
Connection:Keep-Alive
User-Agent:Mozilla/3.0b4gold
Host: www.yourweb.com
Accept: image/jpg ……
你看这里哪能保存history变量呢,就算是post方式的http数据报也只能以form的形式提交数据。所以socket也不能帮什么忙的。
GET /aaa.jpg HTTP/1.0
Connection:Keep-Alive
User-Agent:Mozilla/3.0b4gold
Host: www.yourweb.com
Accept: image/jpg ……
你看这里哪能保存history变量呢,就算是post方式的http数据报也只能以form的形式提交数据。所以socket也不能帮什么忙的。
#7
至于你说的那个session是否保持的问题我觉得很奇怪,我想是网络不通畅吧。要不你给我那个网站的地址,我去试试。
#8
你的email ?
#9
x-explorer@sohu.com
#10
大致原因我了解了,最大的可能性是服务器每次自动检查对.jpg图形的HTTP链接的头部,
可能针对 HTTP_REFERER 的.
我用perl做了一个修改自身发送http::header的东西,估计可以.
但由于我的客户端却是VB或DEPHI的
怎样改自已用Internet Transfer Control控件发出的HTTP链接的header中的 referer成了我的一个大问题.
可能针对 HTTP_REFERER 的.
我用perl做了一个修改自身发送http::header的东西,估计可以.
但由于我的客户端却是VB或DEPHI的
怎样改自已用Internet Transfer Control控件发出的HTTP链接的header中的 referer成了我的一个大问题.
#11
你参考一下delphi的isapi这部分,应该有这方面的资料的。
#1
我是用JSP和Servlet的,不过我想都应该类似。应该是建立一个Session然后再用户登陆后在Session中加入一个标志,这样在进入需要保护的页面是判断这个标志是否存在,或者用cookie来实现也行。
#2
你说的这种方法是用来保持客户端状态的. 需要登录.建立session后, 开另一个IE窗,是同样能保持状态的.
不是我说的内链接保护.
因为我说过了前一页是标准的HTML3.0源码,里面什么也没有.并无任何调用jsp及cookie.且网站内部的HTML大多是别的用户动态编写的,不可能有任何编写的机会.
我想问:有没有底层的变量可以识别客户端的"history"?
不是我说的内链接保护.
因为我说过了前一页是标准的HTML3.0源码,里面什么也没有.并无任何调用jsp及cookie.且网站内部的HTML大多是别的用户动态编写的,不可能有任何编写的机会.
我想问:有没有底层的变量可以识别客户端的"history"?
#3
session的建立并不一定要登陆呀,那还不全在于你的意愿么,只要你在用户登陆首页时建立一个session,然后在后续的页面中进行校验不就行了么,我想他总不能连首页都不能登陆吧,限制也是限制其它页的访问,这样客户端肯定只是HTML,至于你说没有Cookie我想不大可能吧,http是无状态的协议除了用Cookie和基于Cookie的session或url带回数据或者form数据隐藏不可能靠其他的方法来实现这样的功能的吧。
#4
你讲的非常有道理,但我想应该没有session. COOKIE是肯定没有的.
因为我直接请求失败的是.jpg文件,服务器能不能在.jpg上验证session?
我做了这些:在该服务器上临时建了一个HTM,先记页面的URL,HTM后缀,该页无任何内嵌的标记.
先断开网络,再拨号上网.清理了cookie.
马上进入该页,(而这一页根本就是刚刚我临时自建的HTM),就可以点击下一步的该页的链接图片,获得成功.查看自身机器内的cookie,未发现新的cookie.
直接在IE里输入该图的url路径,获取失败.
我想:可能性会不会有以下可能:
1,服务器上对任意后缀的文件都建了一个保护机制(内链接保护),有点象有些服务商的免费空间的banner条,你在你自己的html代码里不写任何代码,也会出现服务商的banner. 我映象中NT的internet服务器管理项好象有点之类的东西(好长时间没用NT),然后,在任意文件上加了一个自动的session? 但问题是.jpg上也可以验证session?
2 ,在socket编程底部,是否有传递IE的'history'变量,即"后退"项?
自编WEB服务器的大有人在.但我对这些底层的东西只了解了表面的东东,还不会.
注:谢谢xexplorer. 5点
因为我直接请求失败的是.jpg文件,服务器能不能在.jpg上验证session?
我做了这些:在该服务器上临时建了一个HTM,先记页面的URL,HTM后缀,该页无任何内嵌的标记.
先断开网络,再拨号上网.清理了cookie.
马上进入该页,(而这一页根本就是刚刚我临时自建的HTM),就可以点击下一步的该页的链接图片,获得成功.查看自身机器内的cookie,未发现新的cookie.
直接在IE里输入该图的url路径,获取失败.
我想:可能性会不会有以下可能:
1,服务器上对任意后缀的文件都建了一个保护机制(内链接保护),有点象有些服务商的免费空间的banner条,你在你自己的html代码里不写任何代码,也会出现服务商的banner. 我映象中NT的internet服务器管理项好象有点之类的东西(好长时间没用NT),然后,在任意文件上加了一个自动的session? 但问题是.jpg上也可以验证session?
2 ,在socket编程底部,是否有传递IE的'history'变量,即"后退"项?
自编WEB服务器的大有人在.但我对这些底层的东西只了解了表面的东东,还不会.
注:谢谢xexplorer. 5点
#5
请教xexplorer:
如果一个iE窗口里获取一个HTML网页后,建立了一个session,然后在未过期之前,点击一个.jpg的缩略图,获取.jpg成功.
回退.迅速重现了刚才HTML页面.
在当前的窗口里输入刚才的.jpg文件URL,获取出错.
再回退.迅速重现刚才HTML页面.
在当前窗口再按一下刚才.jpg的缩略图,获取404错误.
回退,重现html.
选择其它.jpg的缩略图,获取成功.
此时session是保持着呢,还是没保持着?
如果一个iE窗口里获取一个HTML网页后,建立了一个session,然后在未过期之前,点击一个.jpg的缩略图,获取.jpg成功.
回退.迅速重现了刚才HTML页面.
在当前的窗口里输入刚才的.jpg文件URL,获取出错.
再回退.迅速重现刚才HTML页面.
在当前窗口再按一下刚才.jpg的缩略图,获取404错误.
回退,重现html.
选择其它.jpg的缩略图,获取成功.
此时session是保持着呢,还是没保持着?
#6
刚才我在自己的机子上试了试,我先把cookie删掉,然后访问我自己机器上的server建立一个session,结果我发现我的机器上竟然也没有cookie,呵呵,奇怪吧。而且不管什么Web server我想它都不会为每一个文件连接建立一个session的,那样的话服务器早该被拖死机了。我没有研究过ie的行为,不过我想它不会用http通信以外的方式与web服务器联系的,在http数据报中不会包含history变量的,你可以看看http的报文。
GET /aaa.jpg HTTP/1.0
Connection:Keep-Alive
User-Agent:Mozilla/3.0b4gold
Host: www.yourweb.com
Accept: image/jpg ……
你看这里哪能保存history变量呢,就算是post方式的http数据报也只能以form的形式提交数据。所以socket也不能帮什么忙的。
GET /aaa.jpg HTTP/1.0
Connection:Keep-Alive
User-Agent:Mozilla/3.0b4gold
Host: www.yourweb.com
Accept: image/jpg ……
你看这里哪能保存history变量呢,就算是post方式的http数据报也只能以form的形式提交数据。所以socket也不能帮什么忙的。
#7
至于你说的那个session是否保持的问题我觉得很奇怪,我想是网络不通畅吧。要不你给我那个网站的地址,我去试试。
#8
你的email ?
#9
x-explorer@sohu.com
#10
大致原因我了解了,最大的可能性是服务器每次自动检查对.jpg图形的HTTP链接的头部,
可能针对 HTTP_REFERER 的.
我用perl做了一个修改自身发送http::header的东西,估计可以.
但由于我的客户端却是VB或DEPHI的
怎样改自已用Internet Transfer Control控件发出的HTTP链接的header中的 referer成了我的一个大问题.
可能针对 HTTP_REFERER 的.
我用perl做了一个修改自身发送http::header的东西,估计可以.
但由于我的客户端却是VB或DEPHI的
怎样改自已用Internet Transfer Control控件发出的HTTP链接的header中的 referer成了我的一个大问题.
#11
你参考一下delphi的isapi这部分,应该有这方面的资料的。