Google sitemap index 用于搜索引擎收录
作者:chill 日期:2005-08-22 00:07
*****************************************************
Google新推出的Sitemap,是对原来robots.txt的扩展,它使用XML格式来记录整个网站的信息并供Google读取,使搜索引擎能更快更全面的收录网站的内容。
(Via Google Blog)
Sitemap的作用就好像为网站提供了整站的RSS,而Google就是这些RSS的订阅者,只要网站有更新就会自动通知Google。这样一来,搜索引擎的收录由被动的Pull变成了主动的Push,辛苦的Google爬虫们终于可以松一口气了。
不过就目前来说,Google Sitemap还不是一个能让每个站长都方便使用的东西。其要求的XML格式虽不是很复杂,但要手工制作还是需要费不少功夫。虽然Google提供了Sitemap自动生成器,但目前只有python语言的版本, 能用上的也是少数。
不过Google Sitemap是按照创作共用协议发布的,Sitemap生成器也是开源的,所以相信相关的工具会很快出现,到时候站长和Blogger们就可以方便的使用这项服务了。
*****************************************************
简单点说,就是你以XML的格式向Google提交一个站点地图,以后google就会根据这个地图,阶段性地抓取该地图指出的页面。抱怨google收入页面太少的朋友不妨一试。
对于Bo-Blog V1.6 以上用户,只需下载这个文件,解压后放到blog运行的根目录下,即拥有了一个Sitemap。
然后,到Google Sitemap提交地址:https://www.google.com/webmasters/sitemaps ,点击Add a sitemap,输入你的Sitemap地址,等上几个小时就行了。
默认每个分类提交最多40篇日志,可以用Editplus 2.12以上版本打开sitemap.php修改这一数值。数值越大,google抓取对站点的压力也越大。
本站的Google Sitemap: http://www.bo-blog.com/sitemap.php
(以上引自bo-blog,以下为一些样例代码,源自落伍)
查看...
Google新推出的Sitemap,是对原来robots.txt的扩展,它使用XML格式来记录整个网站的信息并供Google读取,使搜索引擎能更快更全面的收录网站的内容。
(Via Google Blog)
Sitemap的作用就好像为网站提供了整站的RSS,而Google就是这些RSS的订阅者,只要网站有更新就会自动通知Google。这样一来,搜索引擎的收录由被动的Pull变成了主动的Push,辛苦的Google爬虫们终于可以松一口气了。
不过就目前来说,Google Sitemap还不是一个能让每个站长都方便使用的东西。其要求的XML格式虽不是很复杂,但要手工制作还是需要费不少功夫。虽然Google提供了Sitemap自动生成器,但目前只有python语言的版本, 能用上的也是少数。
不过Google Sitemap是按照创作共用协议发布的,Sitemap生成器也是开源的,所以相信相关的工具会很快出现,到时候站长和Blogger们就可以方便的使用这项服务了。
*****************************************************
简单点说,就是你以XML的格式向Google提交一个站点地图,以后google就会根据这个地图,阶段性地抓取该地图指出的页面。抱怨google收入页面太少的朋友不妨一试。
对于Bo-Blog V1.6 以上用户,只需下载这个文件,解压后放到blog运行的根目录下,即拥有了一个Sitemap。
然后,到Google Sitemap提交地址:https://www.google.com/webmasters/sitemaps ,点击Add a sitemap,输入你的Sitemap地址,等上几个小时就行了。
默认每个分类提交最多40篇日志,可以用Editplus 2.12以上版本打开sitemap.php修改这一数值。数值越大,google抓取对站点的压力也越大。
本站的Google Sitemap: http://www.bo-blog.com/sitemap.php
(以上引自bo-blog,以下为一些样例代码,源自落伍)
Sample XML Sitemap Index
The following example shows a Sitemap index in XML format. The Sitemap index lists two Sitemaps:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
<sitemap>
<loc>http://www.example.com/sitemap1.xml.gz</loc>
<lastmod>2004-10-01T18:23:17+00:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.example.com/sitemap2.xml.gz</loc>
<lastmod>2005-01-01</lastmod>
</sitemap>
</sitemapindex>
The following example shows a Sitemap index in XML format. The Sitemap index lists two Sitemaps:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
<sitemap>
<loc>http://www.example.com/sitemap1.xml.gz</loc>
<lastmod>2004-10-01T18:23:17+00:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.example.com/sitemap2.xml.gz</loc>
<lastmod>2005-01-01</lastmod>
</sitemap>
</sitemapindex>
查看...
QQ被盗的形式及密码保护技巧
作者:chill 日期:2005-08-21 18:20
QQ密码失窃基本上有两种方式:一种是黑客通过各种方式,在你使用的机器里面种下木马(如广外男/女生),以此获得你所使用计算机的控制权;第二种是在网吧、机房等公用计算机上使用QQ,如果这些计算机被安装了盗取QQ密码的黑客软件,安装者就可以轻易获得所有在计算机上使用过的QQ号码的密码。
第一种情况:虽然此种情况比较少,但是涉及面很广,也更加复杂。如果万一不幸遇到,你失去的可能不仅仅是QQ密码。也请大家不要怀疑网络上黑客的数量,有一次笔者一天之内检测到3次黑客攻击。
那我们应该如何应对这种攻击呢?最简单的方法就是安装防火墙。
还有个比较常用的方法是设置代理服务器以达到隐藏自己真实IP地址。使用QQ的时候,可以在系统参数中选择使用Socks 5代理服务器,QQ 1230版中还新开放了以前仅对会员开放的HTTP 1.1代理功能。至于代理服务器的地址,可以用代理猎手或用QQ代理公布器(http.skycn.net/down/qqproxy.zip)查找。如果你懒得自己找的话,也可以到一些网站上查看代理服务器列表。
第二种情况:实际上这种情况是QQ失窃的主要形式,可能占到QQ失窃事件的95%。一般来说,这样盗取QQ密码的方式一般有三种:后台监控QQ窗口、伪装QQ登录界面、后台记录键盘。其中后台记录键盘方式由于记录的内容非常杂乱,分析起来很困难,已经较少有人使用,现在主要以前两者为主。如今QQ木马非常多,如QQ杀手、QQ黑暗精灵、QQ密码轻松盗、QQ之情感往事、 QQ黑眼睛等等。下面让我们来认识一下几个流传较广的杀手吧。
1.QQ密码使者
完全傻瓜且免费的QQ黑客工具,它支持邮件主题的更改,使用时你只需要输入邮箱地址即可,而且操作步骤只有三步。同时结合了前几个版本的所有特性,支持目前所有的QQ版本。对于QQ密码使者,可以使用QQ密码清除器清除。
2.QQ抢劫者
全后台监控,可截获所有QQ版本中以注册向导方式登录的QQ账号及密码。同前一版本相比,发信方式有了很大改善,全面支持需要身份验证的SMTP,程序另附捆绑功能。笔者尚未找到专门的查杀工具,如果你发现正确输入密码却提示密码错误的情况,那基本上就是QQ抢劫者或者类似软件在作怪了,大家现在惟一能做的就是尽快修改密码。
3.QQ杀手
功能很强大,也是全后台监控,它不仅可以监控到通过注册向导方式输入的密码,而且在QQ杀手运行的期间,其它登录方式输入的密码也可以检测到。它也支持SMTP邮箱身份验证,支持把密码文件发往邮箱和存放为本地文件。对于QQ杀手,可以用QQ杀手专杀工具清除。
查看...
第一种情况:虽然此种情况比较少,但是涉及面很广,也更加复杂。如果万一不幸遇到,你失去的可能不仅仅是QQ密码。也请大家不要怀疑网络上黑客的数量,有一次笔者一天之内检测到3次黑客攻击。
那我们应该如何应对这种攻击呢?最简单的方法就是安装防火墙。
还有个比较常用的方法是设置代理服务器以达到隐藏自己真实IP地址。使用QQ的时候,可以在系统参数中选择使用Socks 5代理服务器,QQ 1230版中还新开放了以前仅对会员开放的HTTP 1.1代理功能。至于代理服务器的地址,可以用代理猎手或用QQ代理公布器(http.skycn.net/down/qqproxy.zip)查找。如果你懒得自己找的话,也可以到一些网站上查看代理服务器列表。
第二种情况:实际上这种情况是QQ失窃的主要形式,可能占到QQ失窃事件的95%。一般来说,这样盗取QQ密码的方式一般有三种:后台监控QQ窗口、伪装QQ登录界面、后台记录键盘。其中后台记录键盘方式由于记录的内容非常杂乱,分析起来很困难,已经较少有人使用,现在主要以前两者为主。如今QQ木马非常多,如QQ杀手、QQ黑暗精灵、QQ密码轻松盗、QQ之情感往事、 QQ黑眼睛等等。下面让我们来认识一下几个流传较广的杀手吧。
1.QQ密码使者
完全傻瓜且免费的QQ黑客工具,它支持邮件主题的更改,使用时你只需要输入邮箱地址即可,而且操作步骤只有三步。同时结合了前几个版本的所有特性,支持目前所有的QQ版本。对于QQ密码使者,可以使用QQ密码清除器清除。
2.QQ抢劫者
全后台监控,可截获所有QQ版本中以注册向导方式登录的QQ账号及密码。同前一版本相比,发信方式有了很大改善,全面支持需要身份验证的SMTP,程序另附捆绑功能。笔者尚未找到专门的查杀工具,如果你发现正确输入密码却提示密码错误的情况,那基本上就是QQ抢劫者或者类似软件在作怪了,大家现在惟一能做的就是尽快修改密码。
3.QQ杀手
功能很强大,也是全后台监控,它不仅可以监控到通过注册向导方式输入的密码,而且在QQ杀手运行的期间,其它登录方式输入的密码也可以检测到。它也支持SMTP邮箱身份验证,支持把密码文件发往邮箱和存放为本地文件。对于QQ杀手,可以用QQ杀手专杀工具清除。
查看...
防止ACCESS数据库被下载的9种方法
作者:chill 日期:2005-08-21 18:18
引子:昨天和animator试验了一下,把data.mdb文件改名为data.asp文件后放在 wwwroot目录里。然后在IE中输入data.asp路径后,发现IE显示一片空白,右键->察看源文件,跳出记事本,将内容另存为.mdb文件,用ACCESS打开,发现需要密码,也就是说至少文件头被破坏。
然后用Flashget试验下载data.asp文件,并另存为data.mdb文件,发现用ACCESS打开完好无损!!!看 来,好一些编程人员在开发的时候都认为,改了mdb后缀为asp就能防下载的概念,是错的!后台数据库被下载对于一个asp+a ccess的网站来说无疑是一场惨绝人寰的灾难。今天找了各方的文章,归纳一下有以下9种办法防止数据库被下载(欢迎补充):
1.发挥你的想象力 修改数据库文件名
不用说,这是最最偷懒的方法,但是若攻击者通过第三方途径获得了数据库的路径),就玩完了。比如说攻击者本来只能拿到list权,结果意外看到了数据库路径,就可以冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,起再隐蔽的文件名都瞒不了人。故保密性为最低。
2.数据库名后缀改为ASA、ASP等
此法须配合一些要进行一些设置,否则就会出现本文开头的那种情况
(1)二进制字段添加(此招我还没有炼成-_-+)。
(2)在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。可是 如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以 < %的形式存在,无效!正确的方法是将<%存入OLE对象字段里,这样我们的目的就能达到了。
操作方法:
首先,用notepad新建一个内容为 <% 的 文本文件,随便起个名字存档。
接着,用Access打开您的数据库文件,新建一个表,随便起个名字,在表中添加一个OLE对象的字段,然后添加一个记录, 插入之前建立的文本文件,如果操作正确的话,应该可以看到一个新的名为"数据包"的记录。即可
3.数据库名前加"#"
只需要把数据库文件前名加上#、然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别#号前名的部分,对于后面的自动去掉,比如你要下载:http://www.pcdigest.com/date/# 123.mdb(假设存在的话)。无论是IE还是FLASHGET等下到的都是http://www.test.com/dat e/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)
另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为"%",如http ://www.test.com/date/123 ;456.mdb,下载的时http://www. test.com/date/123 %456.mdb。而我们的目录就根本没有123%456.mdb这个文件,所 以下载也是无效的这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载!
4.加密数据库
首先在选取"工具->安全->加密/解密数据库,选取数据库(如:employer.mdb),然后接确定,接 着会出现"数据库加密后另存为"的窗口,存为:employer1.mdb。接着employer.mdb就会被编码,然后存为 employer1.mdb..要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。
接下来我们为数据库加密,首先以打开经过编码了的 e mployer1.mdb,在打开时,选择"独占"方式。然后选取功能表的"工具->安全->设置数据库密码",& nbsp;接着输入密码即可。这样即使他人得到了employer1.mdb文件,没有密码他是无法看到 emplo yer1.mdb的。
加密后要修改数据库连接页, 如:
conn.open "driver={microsoft access driver(*.mdb)};uid=admin;pwd=数据库密码;dbq=数据库路径"
这样修改后,数据库即使被人下载了,别人也无法打开(前提是你的数据库连接页中的密码没有被泄露)
但值得注意的是,由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行"异或"来形成一个加密串,并将其存储在*.mdb文件从地址"&H42"开始的区域内。所以一个好的程序员可以轻松制作一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息安 全依然是个未知数。
查看...
(出处:http://www.vipcn.com)
然后用Flashget试验下载data.asp文件,并另存为data.mdb文件,发现用ACCESS打开完好无损!!!看 来,好一些编程人员在开发的时候都认为,改了mdb后缀为asp就能防下载的概念,是错的!后台数据库被下载对于一个asp+a ccess的网站来说无疑是一场惨绝人寰的灾难。今天找了各方的文章,归纳一下有以下9种办法防止数据库被下载(欢迎补充):
1.发挥你的想象力 修改数据库文件名
不用说,这是最最偷懒的方法,但是若攻击者通过第三方途径获得了数据库的路径),就玩完了。比如说攻击者本来只能拿到list权,结果意外看到了数据库路径,就可以冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,起再隐蔽的文件名都瞒不了人。故保密性为最低。
2.数据库名后缀改为ASA、ASP等
此法须配合一些要进行一些设置,否则就会出现本文开头的那种情况
(1)二进制字段添加(此招我还没有炼成-_-+)。
(2)在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。可是 如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以 < %的形式存在,无效!正确的方法是将<%存入OLE对象字段里,这样我们的目的就能达到了。
操作方法:
首先,用notepad新建一个内容为 <% 的 文本文件,随便起个名字存档。
接着,用Access打开您的数据库文件,新建一个表,随便起个名字,在表中添加一个OLE对象的字段,然后添加一个记录, 插入之前建立的文本文件,如果操作正确的话,应该可以看到一个新的名为"数据包"的记录。即可
3.数据库名前加"#"
只需要把数据库文件前名加上#、然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别#号前名的部分,对于后面的自动去掉,比如你要下载:http://www.pcdigest.com/date/# 123.mdb(假设存在的话)。无论是IE还是FLASHGET等下到的都是http://www.test.com/dat e/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)
另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为"%",如http ://www.test.com/date/123 ;456.mdb,下载的时http://www. test.com/date/123 %456.mdb。而我们的目录就根本没有123%456.mdb这个文件,所 以下载也是无效的这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载!
4.加密数据库
首先在选取"工具->安全->加密/解密数据库,选取数据库(如:employer.mdb),然后接确定,接 着会出现"数据库加密后另存为"的窗口,存为:employer1.mdb。接着employer.mdb就会被编码,然后存为 employer1.mdb..要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。
接下来我们为数据库加密,首先以打开经过编码了的 e mployer1.mdb,在打开时,选择"独占"方式。然后选取功能表的"工具->安全->设置数据库密码",& nbsp;接着输入密码即可。这样即使他人得到了employer1.mdb文件,没有密码他是无法看到 emplo yer1.mdb的。
加密后要修改数据库连接页, 如:
conn.open "driver={microsoft access driver(*.mdb)};uid=admin;pwd=数据库密码;dbq=数据库路径"
这样修改后,数据库即使被人下载了,别人也无法打开(前提是你的数据库连接页中的密码没有被泄露)
但值得注意的是,由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行"异或"来形成一个加密串,并将其存储在*.mdb文件从地址"&H42"开始的区域内。所以一个好的程序员可以轻松制作一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息安 全依然是个未知数。
查看...
(出处:http://www.vipcn.com)
如何破解xp开机密码
作者:chill 日期:2005-08-21 18:17
最进我在网上找到一个关于破解xp开机密码的文章,经过试用后感觉还不错,特此贴出来给各位分享:
秘诀1:大家知道,WindowsXP的密码存放在系统所在的 window/system32/config/
下SAM 文件中,SAM文件即账号密码数据库文件。当我们登录系统的时候,系统会自动地和Config中的SAM自动校对,如发现此次密码和用户名全与SAM文件中的加密数据符合时,你就会顺利登录;如果错误则无法登录。既然如此,我们的第一个方法就产生了:删除SAM文件来恢复密码。
如果你不用管本来系统卡包含的任意账号,而且有两个操作系统的话,可以使用另外一个能访问NTFS的操作系统启动电脑,或者虽然没有安装两个系统,但可以使用其他工具来访问NTFS。然后删除C:window/system32/config/
目录下的SAM文件,重新启动。这时,管理员Administrator账号就没有密码了。当然,取下硬盘换到其他机器上来删除SAM文件也算个好办法。
秘诀1:大家知道,WindowsXP的密码存放在系统所在的 window/system32/config/
下SAM 文件中,SAM文件即账号密码数据库文件。当我们登录系统的时候,系统会自动地和Config中的SAM自动校对,如发现此次密码和用户名全与SAM文件中的加密数据符合时,你就会顺利登录;如果错误则无法登录。既然如此,我们的第一个方法就产生了:删除SAM文件来恢复密码。
如果你不用管本来系统卡包含的任意账号,而且有两个操作系统的话,可以使用另外一个能访问NTFS的操作系统启动电脑,或者虽然没有安装两个系统,但可以使用其他工具来访问NTFS。然后删除C:window/system32/config/
目录下的SAM文件,重新启动。这时,管理员Administrator账号就没有密码了。当然,取下硬盘换到其他机器上来删除SAM文件也算个好办法。
纯ASP上传图像文件到数据库的最佳例子
作者:chill 日期:2005-08-21 18:16
getfile.htm
-------------------------
<html>
<head>
<title>保存图片到数据库</title>
</head>
<body>
<b>
<p></b>你可以找个图片试试,保存完毕后会有提示</p>
<form METHOD="POST" ENCTYPE="multipart/form-data" ACTION="savetodb.asp">
<p>Email : <input NAME="email" VALUE="wangcq@sina.com" size="20"><br>
Picture : <input TYPE="file" NAME="blob"><br>
<input TYPE="submit" NAME="Enter"> </p>
</form>
</body>
</html>
savetodb.asp
----------------------------------
<%
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
email = UploadRequest.Item("email").Item("Value")
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,""))
picture = UploadRequest.Item("blob").Item("Value")
'Response.ContentType = contentType
'Response.binaryWrite picture
set objCn = server.createobject("adodb.connection")
set objRst = server.createobject("adodb.recordset")
objCn.Open "upload"
objrst.Open "pic", objcn, 1,3,2
objrst.addnew
objrst.fields("filename")=filename
objrst.fields("type")="gif"
objrst.fields("what").appendchunk picture
objrst.update
response.write "<a href=showpic.asp?id=" & objrst("id") & ">第" & objrst("id") & "个图片。</a>"
objrst.close
objCn.close
set objrst=nothing
set objcn = nothing
%>
<!--#include file="upload.asp"-->
showpic.asp
----------------------------------------
<%
set objCn = server.createobject("adodb.connection")
set objRst = server.createobject("adodb.recordset")
objCn.Open "upload"
objrst.Open "select what from pic where id=" & request("id"), objcn
if not objrst.eof then
response.binarywrite objrst("what")
end if
objrst.close
objCn.close
set objrst=nothing
set objcn = nothing
%>
-------------------------
<html>
<head>
<title>保存图片到数据库</title>
</head>
<body>
<b>
<p></b>你可以找个图片试试,保存完毕后会有提示</p>
<form METHOD="POST" ENCTYPE="multipart/form-data" ACTION="savetodb.asp">
<p>Email : <input NAME="email" VALUE="wangcq@sina.com" size="20"><br>
Picture : <input TYPE="file" NAME="blob"><br>
<input TYPE="submit" NAME="Enter"> </p>
</form>
</body>
</html>
savetodb.asp
----------------------------------
<%
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
email = UploadRequest.Item("email").Item("Value")
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,""))
picture = UploadRequest.Item("blob").Item("Value")
'Response.ContentType = contentType
'Response.binaryWrite picture
set objCn = server.createobject("adodb.connection")
set objRst = server.createobject("adodb.recordset")
objCn.Open "upload"
objrst.Open "pic", objcn, 1,3,2
objrst.addnew
objrst.fields("filename")=filename
objrst.fields("type")="gif"
objrst.fields("what").appendchunk picture
objrst.update
response.write "<a href=showpic.asp?id=" & objrst("id") & ">第" & objrst("id") & "个图片。</a>"
objrst.close
objCn.close
set objrst=nothing
set objcn = nothing
%>
<!--#include file="upload.asp"-->
showpic.asp
----------------------------------------
<%
set objCn = server.createobject("adodb.connection")
set objRst = server.createobject("adodb.recordset")
objCn.Open "upload"
objrst.Open "select what from pic where id=" & request("id"), objcn
if not objrst.eof then
response.binarywrite objrst("what")
end if
objrst.close
objCn.close
set objrst=nothing
set objcn = nothing
%>
upload.asp
-------------------------------------------
<%
Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
'Add content to dictionary object
UploadControl.Add "Value" , Value
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
%>
Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
'Add content to dictionary object
UploadControl.Add "Value" , Value
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
%>
test.mdb(dsn 名称:upload)
----------------------------------------
表pic:
id:自动加
filename:文本
type:文本
what:ole
-----------------------------------------
存成单个文件,放在一个目录下,打开(必须用http://...)getfile.htm
上传一个.gif或.jpg就可以显示了。
对于大文件在显示程序(showpic.asp)中可能会用到循环和getchunk方法。自己去做。记住,由于ASP目前暂时不支持二进行制读写,只能存二进制到数据库中。
恶意网页修改注册表的十二种现象及解决办法
作者:chill 日期:2005-08-21 18:13
最近,屡屡发生网友在浏览网页时,造成注册表被修改,使得IE默认连接首页、标题栏及IE右键菜单被改为浏览网页时的地址(多为广告信息及其它的讨厌信息),更有甚者使浏览者的电脑在启动时出现一个提示窗口显示自己的广告,并会自动打开很多的网页,而且有愈演愈烈之势,尤其在办公室中,一不小心便中招,让你措手不及,遇到这种情况我们该怎样办呢?
一、注册表被修改的原因及解决办法
其实,该恶意网页是含有有害代码的ActiveX网页文件,这些广告信息的出现是因为浏览者的注册表被恶意更改的结果。
1、IE默认连接首页被修改
IE浏览器上方的标题栏被改成“欢迎访问******网站”的样式,这是最常见的篡改手段,受害者众多。
受到更改的注册表项目为:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerMainStart Page
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainStart Page
通过修改“Start Page”的键值,来达到修改浏览者IE默认连接首页的目的,如浏览“*****”就会将你的IE默认连接首页修改为 http://www.****.com ”,即便是出于给自己的主页做广告的目的,也显得太霸道了一些,这也是这类网页惹人厌恶的原因。
一、注册表被修改的原因及解决办法
其实,该恶意网页是含有有害代码的ActiveX网页文件,这些广告信息的出现是因为浏览者的注册表被恶意更改的结果。
1、IE默认连接首页被修改
IE浏览器上方的标题栏被改成“欢迎访问******网站”的样式,这是最常见的篡改手段,受害者众多。
受到更改的注册表项目为:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerMainStart Page
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainStart Page
通过修改“Start Page”的键值,来达到修改浏览者IE默认连接首页的目的,如浏览“*****”就会将你的IE默认连接首页修改为 http://www.****.com ”,即便是出于给自己的主页做广告的目的,也显得太霸道了一些,这也是这类网页惹人厌恶的原因。
当今中国震惊世界的20大世界之最!
作者:chill 日期:2005-08-21 17:22
百度上市折射的中国悲哀
作者:chill 日期:2005-08-21 17:15
百度上市的火热,让我们为百度高兴;百度上市后受到的热烈追捧,让我们为中国高兴;百度创造的数百名百万富翁和身价近10亿元的两大富豪,让我们打心眼里羡慕。一句话,百度,让中国高兴。但是,百度的高兴,是从美国传来的,美国的纳斯达克。其中折射出来的种种意味,让我们感到了一丝心酸、一些心痛和很多的悲哀。
百度上市折射的中国悲哀
百度上市的火热,让我们为百度高兴;百度上市后受到的热烈追捧,让我们为中国高兴;百度创造的数百名百万富翁和身价近10亿元的两大富豪,让我们打心眼里羡慕。一句话,百度,让中国高兴。
但是,百度的高兴,是从美国传来的,美国的纳斯达克。其中折射出来的种种意味,让我们感到了一丝心酸、一些心痛和很多的悲哀。
一丝心酸。为什么又是美国,又是纳斯达克?
百度上市折射的中国悲哀
百度上市的火热,让我们为百度高兴;百度上市后受到的热烈追捧,让我们为中国高兴;百度创造的数百名百万富翁和身价近10亿元的两大富豪,让我们打心眼里羡慕。一句话,百度,让中国高兴。
但是,百度的高兴,是从美国传来的,美国的纳斯达克。其中折射出来的种种意味,让我们感到了一丝心酸、一些心痛和很多的悲哀。
一丝心酸。为什么又是美国,又是纳斯达克?
本站立志于收集各类技术文档资料,便于本人和广大网友查询检索,任何转载文章均尽力标明来源,无论单位或个人认为本站存在侵权内容均可与本站联系,任何此类反馈信息一经有效身份证明、权属证明及详细侵权情况证明后,将立即清除!对于转载内容,本站不为其版权负责,其任何言论均与本站无关!








