12   2  /  2  页   跳转

[问题/讨论] asp漏洞

回复:asp漏洞

给你的FileSystemObject对象加把锁


  现在国内提供支持ASP的免费空间越来越多了,对于ASP爱好者来说无疑是个好的势头,但是很多提供免费ASP空间的站点都没有对FileSystemObject这个对象做出任何限制,这也就导致了安全问题。比如,今年愚人节“东莞视窗”所有的主页都遭到了黑客的攻击,其实做这件事情很简单,就是使用FileSystemObject对象,具体的程序就不再讨论了。而另外一个比较有名的提供ASP空间的站点“网界”同样也存在这个安全漏洞,很容易遭到攻击。不仅仅是这些提供免费空间的站点存在这个安全漏洞,很多国内的虚拟主机提供商同样也存在这个安全隐患。这样给商业用户带来的危害就很大了。

  那么我们如何才能限制用户使用FileSystemObject对象呢?一种极端的做法是完全反注册掉提供FileSystemObject对象的那个组件,也就是Scrrun.dll。具体的方法如下:

  在MS-DOS状态下面键入:

Regsvr32 /u c:\windows\system\scrrun.dll

(注意:在实际操作的时候要更改成为你本地的实际路径)

  但是,显而易见,如果这样做,那么包括站点系统管理员在内的任何人都将不可以使用FileSystemObject对象了,这其实并不是站点管理人员想要得到的结果,毕竟我们使用这个对象可以实现方便的在线站台管理,如果连系统管理员都没法使用了,那可就得不偿失了,但是不禁止这个危险的对象又会给自己的站点带来安全漏洞。那么有没有两全其美的方法呢?有!具体方法如下:

  我们可以做到禁止他人非法使用FileSystemObject对象,但是我们自己仍然可以使用这个对象.

  方法如下:

  查找注册表中

   HKEY_CLASSES_ROOT\Scripting.FileSystemObject 键值

  将其更改成为你想要的字符串(右键-->"重命名"),比如更改成为



   HKEY_CLASSES_ROOT\Scripting.FileSystemObject2



  这样,在ASP就必须这样引用这个对象了:

   Set fso = CreateObject("Scripting.FileSystemObject2")

  而不能使用:

   Set fso = CreateObject("Scripting.FileSystemObject")

  如果你使用通常的方法来调用FileSystemObject对象就会无法使用了。

  呵呵,只要你不告诉别人这个更改过的对象名称,其他人是无法使用FileSystemObject对象的。这样,作为站点管理者我们就杜绝了他人非法使用FileSystemObject对象,而我们自己仍然可以使用这个对象来方便的实现网站在线管理等等功能了!

(以上方法在Win98+PWS以及WinNT4+IIS4环境下测试通过)

对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 

回复:asp漏洞

温柔杀手-跨站Script攻击


每当我们想到黑客的时候,黑客往往是这样一幅画像:一个孤独的人,悄悄进入别人的服务器中,进行破坏或者窃取别人的秘密资料。也许他会更改我们的主页,甚者会窃取客户的信用卡号和密码。另外,黑客还会攻击访问我们网站的客户。与此同时,我们的服务器也成了他的帮凶。微软称这种攻击为“跨站script”攻击。而这种攻击大多数都发生在网站动态产生网页的时侯,但黑客的目标并不是你的网站,而是浏览网站的客户。

跨站script攻击的说明

  在一本名为<<ADVISORY CA--2000-02>>的杂志中,CERT警告大家:如果服务器对客户的输入不进行有效验证,黑客就会输入一些恶意的HTML代码,当这些HTML代码输入是用于SCRIPT程序,他们就能利用它来进行破坏,如插入一些令人厌恶的图片或声音等,同时,也能干扰了客户正确浏览网页。

  我们知道,有些朋友曾经被诱导到一些可疑的免费网站,他们得到的仅仅是10到20个小的窗口,这些窗口常常伴随着由JAVA 或 JAVASCRIPT生成的失效安钮,这被称为鼠标陷阱。关闭这些窗口是徒劳的,每当我们关闭一个窗口,又会有10几个窗口弹出。这种情况常常发生在管理员没在的时侯发生。鼠标事件是黑客利用跨站SCRIPT方法攻客户的典型范例。

  恶意的标签和SCRIPT不单纯的恶作剧,他们甚至可以窃取资料和捣毁系统。一个聪明的甚至是不够聪明的黑客都能够使用SCRIPT干扰或者改变服务器数据的输入。利用SCRIPT代码也能攻击客户系统,让你的硬盘尽损。而且你要知道,在你一边使用服务器的时候,黑客的SCRIPT也正在你服务器里安全的地方运行着的呀!如果客户对你的服务器非常信认,同样他们也会信任那些恶意的SCRIPT代码。甚至这个代码是以〈SCRIPT〉或者〈OBJECT〉的形式来自黑客的服务器。

  即使使用了防火墙(SSL)也不能防止跨站SCRIPT的攻击。那是因为如果生成恶意SCRIPT代码的设备也使用了SSL,我们服务器的SSL是不能辨别出这些代码来的。我们难道就这样把客户曾经那么信任的网站拱手让给黑客吗?而且有这种破坏的存在,会让你网站名誉尽损的。

一、跨站SCRIPT攻击示例:

  根据CERT的资料,动态输入大致有这几种形式:URL参数,表格元素,COOKISE以及数据请求。让我们来分析一下,这个只有两个页面的网站,网站名为:MYNICESITE.COM。第一页使用一张表格或COOKIE来获取用户名:

<%@ Language=VBScript %>

<% If Request.Cookies("userName") <> "" Then

Dim strRedirectUrl

strRedirectUrl = "page2.asp?userName="

strRedirectUrl = strRedirectUrl & Response.Cookies("userName")

Response.Redirect(strRedirectUrl)

Else %>

<HTML>

<HEAD>

<TITLE>MyNiceSite.com Home Page</TITLE>

</HEAD>

<BODY>

<H2>MyNiceSite.com</H2>

<FORM method="post" action="page2.asp">

Enter your MyNiceSite.com username:

<INPUT type="text" name="userName">

<INPUT type="submit" name="submit" value="submit">

</FORM>

</BODY>

</HTML>

<% End If %>

第二页返回用户名以示欢迎:

<%@ Language=VBScript %>

<% Dim strUserName

If Request.QueryString("userName")<> "" Then

strUserName = Request.QueryString("userName")

Else

Response.Cookies("userName") = Request.Form("userName")

strUserName = Request.Form("userName")

End If %>

<HTML>

<HEAD></HEAD>

<BODY>

<H3 align="center">Hello: <%= strUserName %> </H3>

</BODY>

</HTML>
  当你正常常输入文字时,一切都很正常。如果你输入Script代码:<SCRIPT>alert('Hello.';</script>,JavaScript警告标签就会弹出来:
  在你下一次访问时,这个警示标签同样会出现;这是因为这个Script代码在你第一次访问的时后就已经留在cookie中了。这是一个简单的跨站攻击的范例。

  如果你认为这是一个特殊情况,你也不妨到网上别的地方看看,亲自试一下。我曾经对一些大型的政府网站、教育网站以及商业网站进行过测试,他们当中的确有部分出现了以上所说的情况,我甚至发现了我经常使用信用卡的网站也居然对输入不进行任何过滤,想想真是可怕。

对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 

回复:asp漏洞

温柔杀手-跨站Script攻击(2)


二、 用E-Mail进行跨站Script攻击

  跨站script攻击用在列表服务器,usenet服务器和邮件服务器来得特别容易。下面还是以MyNiceSite.com网站为例进行说明。由于你经常浏览这个网站,它的内容也的确让你爱不爱不释手,因此在不知不觉中你就把浏览器的改成了总是信任这个动态网站内容的设置。

  MyNiceSite.com网站总是通过出售征订它们Email信件的邮箱地址来获得收入,这的确是一种不太好的办法。于是我买了它的一份邮箱地址。并发了大量的邮件给你们。在信中我告诉你们尽快访问这个网 站,并检查你们帐户使用的最新情况。为了让你们感到方便,我在这信中也作了链接。我在这链接URL中的username参数中舔加了script代码。有些客户在不知不觉中就点击了这个链接,也就是说上了我的当(如图),同时我也从中得到了好处:


  它是这样工作的,当你点击这个链接的时后,在链接里的script代码就会引导你所用浏览器去下载我的JavaScript程序并执行它。我的Script检查到你使用的是IE浏览器后,就着手下载ActiceX控件 particularlyNasty.dll。因为之前你已经把这个网站的内容认为总是安全的,这样,我的script代码和Active 控件就能在你机器上自由自在的运行了。

三、 Activex攻击说明

  在讨论ActiveX时,CERT和微软都没提到跨站script方法所带来的的危险。W3C在<<安全常见问题解答>>中对ActiveX的安全问题作了比较详尽的说明。Java applet对系统的控制受到严格限制。SUN开发它时就规定,只有那些对系统的安全不构成威胁的操作才被允许运行。

  在另一方面,ActiveX对系统的操作就没有严格地被限制。如果一但被下载,就可以象安装的可执行程序一样做他们想干的事情。针对这一特点IE浏览器也作了某些限制,如对于那些不安全的站点,在它的默认设置中就会不允许你进行下载或者会给你警告的提示。正在基于ActiveX进行开发的公司,如VeriSign公司,它们对ActiveX控件都给编了号。当你在下载控件的时后,IE浏览器会给你警告并显示它的可信籁程度。由用户决定是否相信这个控件。这样一来系统的安全性就增加了。

  但是,对于那些没有多少经验的用户来说,他们往往不自觉地对原来的设置进行了修改,让这些控件在没有任何提示的情况下就下载了。另外,对一个新手来说,即使在有提示的情况下也会不加思索地下载那些没作任何标记的控件。在我们所举的例子中,由于你对该站点的信任,改了浏览器的设置,这样,ActiveX控件在不经过任何提示的情况下就下载,并在你的机器上不知不觉地开始运行。

四、16进制编码的ActiveX Script 攻击

  要把用心不良的标签和script区分出来是一件非常困难的事。Script还可以16进制的形式把自己藏起来。让我们看看下面这个E-mail范例好吗?它是以16进制的形式被发送出去的:


  这几乎是一封完整的邮件,里面包含了以16进制伪造的URL参数:sender=mynicesite.com。当用户点击链接时,用户的浏览器就会直接开始第一例所说的处理过程而弹出警告窗口。

对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 

回复:asp漏洞

温柔杀手-跨站Script攻击(3)


第二部分:跨站Script攻击的防犯

一、如何避免服务器受到跨站Script的攻击

  值得庆幸的是,防止跨站Script攻击的技术正趋于完善。目前可采取这几种方式来防止跨站Script的攻击:

1.对动态生成的页面的字符进行编码

2.对输入进行过滤和限制

3.使用HTML和URL编码

1.对动态生成的页面的字符进行编码

  你们首先要采用的就是对动态生成页面的字符进行编码,你必须这样做,不然黑客很有可能更改你的字符设置而轻易地通过你的防线。如果我们的网站是个英语网站,这样只要我们把字符编码设成拉丁字符ISO-8859-1就行了,具体情况如下:

<META http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

2.过滤和限制所有输入的数据

  这是防止跨站Script的攻击的第二种方法,在进行登录的时侯,不要让那些特殊的字符也输入进去。因此我们可在ONSUBMIT方法中加入JAVASCRIPT程序来完成这个功能。在本例中我们限制最多只能输入15个字符。这样可以阻止那些较长的script的输入。

  在<<Knowledge Base Article QA252985>>这本书中微软提供了一个简短的Javascript程序来完成对输入数据的过滤。我们也根据具体情况引进了这段代码用于我们的例子中,如:

function checkForm() {

document.forms[0].userName.value = _

RemoveBad(document.forms[0].userName.value);

return true;

}

// MICROSOFT'S CODE

function RemoveBad(strTemp) {

strTemp = strTemp.replace(/\</\>/\"/\'/\%/\;/\(/\)/\&/\+/\-/g,"");

return strTemp;

}

用这个办法,可以过滤在输入中含有的这些字符:

% < > [ ] { } ; & + - " '( )

3.使用HTML和URL编码

  尽管使用上面所说的过滤和限制输入的办法是一种非常重要用防御手段,但它对我的这种采用邮件方式的攻击还是无能为力。因为我把URL的参数直接放在邮件中。针对这种情况我们不得不采取一种更有力的安全措施。如果我们用的ASP,解决起来相对说来要容易得多。只要对动态生成的网页总进行HTML和URL编码就行了。针对我们例子中的情况,在第一输入页中我们对redirect URL作了如下改动:

strRedirectUrl = strRedirectUrl & _

server.URLEncode(Response.Cookies("userName"))


在执行页中我们加入:

strUserName =server.HTMLEncode(Request.QueryString("userName"))



strUserName =server.HTMLEncode(Request.Form("userName"))

  微软推荐对所有动态页面的输入和输出都应进行编码。甚至在对数据库数据的存入和取出也应如此。这样你就能在很大程度上避免跨站script的攻击。


要做到这些还要在Page1.asp中加入:


<%@ Language=VBScript %>


<% If Request.Cookies("userName") <> "" Then


'redirect if detect the cookie

Dim strRedirectUrl

strRedirectUrl = "page2.asp?userName="

strRedirectUrl = strRedirectUrl & _

server.URLEncode(Request.Cookies("userName"))

Response.Redirect(strRedirectUrl)


Else %>

<HTML>

<HEAD>

<META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">

<TITLE>MyNiceSite.com Home Page</TITLE>

</HEAD>

<SCRIPT LANGUAGE="javascript">

<!--

function checkForm() {

document.forms[0].userName.value =

RemoveBad(document.forms[0].userName.value);

return true;

}


//******************************************************

//Programmer: NOT ORIGINAL CODE - COMES FROM MICROSOFT

//Code Source: Microsoft Knowledge Base Article Q25z985

//Description: Removes bad characters.

//******************************************************


function RemoveBad(strTemp) {

strTemp =strTemp.replace(/\</\>/\"/\'/\%/\;/\(/\)/\&/\+/\-/g, "");

return strTemp;

}

//-->

</SCRIPT>

<BODY>

<BR>

<H2>MyNiceSite.com</H2>

<BR>

<FORM method="post"action="page2.asp" onsubmit="return checkForm();">

Enter your MyNiceSite.com username:

<INPUT type="text"name="userName" width="10" maxwidth="10">

<INPUT type="submit"name="submit" value="submit">

</FORM>

</BODY>

</HTML>

<% end if %>

Page2.asp中加如:


<%@ Language=VBScript %>

<% Dim strUserName

If Request.QueryString("userName")<>"" Then

strUserName =server.HTMLEncode(Request.QueryString("userName"))

Else

Response.Cookies("userName") =Request.Form("userName")

strUserName = server.HTMLEncode(Request.Form("userName"))

End If %>

<HTML>

<HEAD>

<META http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

</HEAD>

<BODY>

<H3 align="center">Hello: <%= strUserName %></H3>

</BODY>

</HTML>

  现在由于这种攻击遭到有效的防制。那于那些恶意的标签和Script被编码,他们就被以文字的形式显现了出来,如下图:


  我们也可增加一个IIS组件用于过滤所有从动态输入中的特殊字符。对于那些已经做好的网站,采用这种办法来防止跨站script的攻击来得非常容易。我们的这个控件能拦截来自ASP页面的REQUEST目标,可对表格,cookie,请求字串和程序的内容进行检测:

  我们也可以通过编写log文件的方法把统计数据加入这个组件中。每当一个客户输入一个非法字符时,这个组件会记下它的IP地址和时间。详情请见Doug Dean的<<Roll your Own IIS Application on ASPToday>>一文。

  我们只需采取一些简单的步聚就能有效地阻止跨站script的攻击。除了以上所说的三种方法外,微软和CERT还强烈推荐使用一种他们称之为“sanity check”的方法。例如,假设有个输入窗口只允许输入数字,我们就给它做个限定,只允许0-9数字的输入。微软和CERT所采用的这种对输入的字符进行限定的办法要比单独的采用过滤特殊字符要好得多。采用了这些措施后你就能让那些参观你网站的客户在访问你网站时受到保护。

二、免受黑客攻击我们浏览器方法:

  当你在网上漫游的时侯,怎样来避免受到攻击呢?微软和CERT建议不要在网上胡碰乱撞。针对这种情况,PC杂志一个栏目的名叫John Dvorack作者作了一个饶有兴趣的回答。他认为这是微软公司一起有预谋的行为:就是用来恐吓网上冲浪的人到那些安全的站点去浏览,如美国在线和MSN.com网站。

  在我们所举的例子中,即使你不在网上胡乱游荡,也不能避免在网上遭到黑客的袭击。具有讽刺意义的是,大多数的危险都来自于我们最信任的网站。如果要让网站一定不出问题,你只好不下载任何动态内容或者任何cookie。预知详情请参阅浏览器的相关资料。

  微软也警告你们应把浏览器的Active Script设置成严格限制的状态并把Email也设成严格限制的接收模式。在点击邮件中的链接时,一定要小心。如需进一步了解情况请参阅一本名叫<<Microsoft's Knowledge Base Article Q253117>>的书。为了以防万一,你最好是多一点上网经验,并且时刻要小心谨慎。

结论

  如果你是以前的UNIX程序开发人员,你也许不会知道跨站script意谓着什么。你知道许多站点的管理人员登录的用户名和密码分别为root,root.同样许多数据库管理员的名称和密码分别为sa,password。你也知道Webzine(如Phrack 和 Alt2600),依据他们所提供的方法能让你一步步地知道某台服务器的弱点。在这种硬件上,你也知道许多网站的数据库服务器和web服务器都没有进行自我保护。一但遭遇黑客,机器就得瘫痪。

  尽管我们很容易采取防止系统受到黑客的攻击的措施,但我们的系统是一直暴露在黑客面前的。我们完全有理由相信下一年还会出现一些新的安全漏洞。在CERT公司John Howard先生指导下完成的一篇论文中曾提到:“跟据目前的研究显示,每个在英特网上具有域名的网站平均一年被黑客至少攻击一次。”

  对服务器来说那怕只是一次这种攻击也是不能承受的。跨站Script攻击是黑客可采用的另一种方法。但我们只要进行以上所说的一些简单的处理就能防止这种形式攻击的发生。 


********************************************************************

对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 

回复:asp漏洞

使用ASP加密算法加密你的数据(一)

简介
首先简单介绍一下有关加密的背景。由于美国禁止几种密码算法的对外出口的
加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密算法,
而不是那些受限制的加密算法。其实,这里介绍的加密算法对于一般的运用来说已经足够
解密人麻烦一阵子的了。它的加密基础是最简单的Vernum密码方法,我将在下一篇文章中
介绍这种密码。
它的基本原理是,需要有一个需要加密的明文和一个随机生成的解密钥匙文件。然后
使用这两个文件组合起来生成密文。
(明文) 组合 (密钥) = 加密后的密文
所以本文介绍的是生成密钥的代码。我们假设我们生成的密钥为512位长的密钥,
它已经足够来加密一个文本字符了。代码如下:
KeyGeN.asp文件
<%
'******************************
' KeyGeN.asp
'******************************
Const g_KeyLocation = "C:\key.txt"
Const g_KeyLen = 512
On Error Resume Next
Call WriteKeyToFile(KeyGeN(g_KeyLen),g_KeyLocation)
if Err <> 0 Then
Response.Write "ERROR GENERATING KEY." & "<P>"
Response.Write Err.Number & "<BR>"
Response.Write Err.Description & "<BR>"
Else
Response.Write "KEY SUCCESSFULLY GENERATED."
End If
Sub WriteKeyToFile(MyKeyString,strFileName)
Dim keyFile, fso
set fso = Server.CreateObject("scripting.FileSystemObject")
set keyFile = fso.CreateTextFile(strFileName, true)
keyFile.WriteLine(MyKeyString)
keyFile.Close
End Sub
Function KeyGeN(iKeyLength)
Dim k, iCount, strMyKey
lowerbound = 35
upperbound = 96
Randomize ' Initialize random-number generator.
for I = 1 to iKeyLength
s = 255
k = Int(((upperbound - lowerbound) + 1) * Rnd + lowerbound)
strMyKey = strMyKey & Chr(k) & ""
next
KeyGeN = strMyKey
End Function
%>
在IIS下运行上面的KeyGeN.asp页面。你只需要如此做一次,他将把密钥写入文件
c:\key.txt中 (如果你愿意的话,你也可以把这个文件放到另外一个更加安全的地方).
然后你可以打开这个key.txt文件,它将包含512个ASCII码在35到96之间的字符.
并且由于是随机生成的,所以每个人的私人密钥文件key.txt将是不一样的,下面是
一个例子密钥文件:
IY/;$>=3)?^-+7M32#Q]VOII.Q=OFMC`:P7_B;<R/8U)XFHC<SR_E$.DLG'=I+@5%*+OP:F_=';'
NSY`-^S.`AA=BJ3M0.WF#T5LGK(=/<:+C2K/^7AI$;PU'OME2+T8ND?W$C(J\,;631'M-LD5F%%1
TF_&K2A-D-54[2P,#'*JU%6`0RF3CMF0(#T07U'FZ=>#,+.AW_/+']DIB;2DTIA57TT&-)O'/*F'
M>H.XH5W^0Y*=71+5*^`^PKJ(=E/X#7A:?,S>R&T;+B#<:-*\@)X9F`_`%QA3Z95.?_T#1,$2#FW
W5PBH^*<])A(;[LJ<OZ6IN?7N4<GT]S0@AVD8C^Q0R^T1D?(1+,YE71X+.*+U$:3XO^Q].KG&0N0];[LJ<OZ6IN?7N4<GT
L?(M'4S8+3JMK5]HC%^1^+K;\$WBXPA?F&5^E\D$7%*O/U[1/?8(5:1OVWV*1Z-%`:K&V?X1,1KU
*U#Q%1<Y\&SA%#1<V
下面再仔细分析一下上面的程序,我们发现其中的lowerbound和upperbound的数值
其实就是你想使用来加密的ASCII字符范围。
后面一篇文章中将介绍如何使用这个密钥来加密和解密一个字符串
最后编辑文物2 最后编辑于 2009-03-13 11:18:33

对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 

回复: asp漏洞

使用ASP加密算法加密你的数据(二)

在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个
字符串。
下面的代码就是能够同时实现这个功能的函数
Crypt.asp文件
<%
Dim g_Key
Const g_CryptThis = "Now is the time for all good men to come to the aid of their country."
Const g_KeyLocation = "c:\key.txt"
g_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(g_CryptThis))
Response.Write "<p>ORIGINAL STRING: " & g_CryptThis & "<p>"
Response.Write "<p>KEY VALUE: " & g_Key & "<p>"
Response.Write "<p>ENCRYPTED CYPHERTEXT: " & EnCrypt(g_CryptThis) & "<p>"
Response.Write "<p>DECRYPTED CYPHERTEXT: " & DeCrypt(EnCrypt(g_CryptThis)) & "<p>"
Function EnCrypt(strCryptThis)
Dim strChar, iKeyChar, iStringChar, I
for I = 1 to Len(strCryptThis)
iKeyChar = Asc(mid(g_Key,I,1))
iStringChar = Asc(mid(strCryptThis,I,1))
' *** uncomment below to encrypt with addition,
' iCryptChar = iStringChar + iKeyChar
iCryptChar = iKeyChar Xor iStringChar
strEncrypted = strEncrypted & Chr(iCryptChar)
next
EnCrypt = strEncrypted
End Function
Function DeCrypt(strEncrypted)
Dim strChar, iKeyChar, iStringChar, I
for I = 1 to Len(strEncrypted)
iKeyChar = (Asc(mid(g_Key,I,1)))
iStringChar = Asc(mid(strEncrypted,I,1))
' *** uncomment below to decrypt with subtraction
' iDeCryptChar = iStringChar - iKeyChar
iDeCryptChar = iKeyChar Xor iStringChar
strDecrypted = strDecrypted & Chr(iDeCryptChar)
next
DeCrypt = strDecrypted
End Function
Function ReadKeyFromFile(strFileName)
Dim keyFile, fso, f
set fso = Server.CreateObject("Scripting.FileSystemObject")
set f = fso.GetFile(strFileName)
set ts = f.OpenAsTextStream(1, -2)
Do While not ts.AtEndOfStream
keyFile = keyFile & ts.ReadLine
Loop
ReadKeyFromFile = keyFile
End Function
%>
在Crypt.asp中我们首先从密钥文件中得到密钥值,然后从这段密钥中
截取和我们需要加密的明文同样长度的密钥。然后使用一个简单的异或操作
将明文和密钥进行运算,那么得到的结果就是加密后的密文了。过程很简单的。
由于是使用了异或操作,所以解密将非常简单,只要使用同样的密钥对密文
再次进行异或操作就能够解密了。
在上面介绍的基础上,你可以少加改动,就可以使用同样的方法加密一个文件。
唯一需要注意的是,对于一个二进制文件,你需要做一些完整性检查以保证转换回来
的字符不要越界。
现在你需要做的就是把密钥保存在服务器上的一个安全的地方(不能够被外部访问)
附注:
Vernam密码是由Gilbert Vernam (他是AT&T的工程师)在1918年发明的。
这是一种使用异或方法进行加密解密的方法。

对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 

回复:asp漏洞

用ASP实现网页保密的两种方法




作者:胡舜良

   本 人 在 维 护 公 司 内 部 网 站 时 碰 到 一 个 实 际 问 题 — —MIS 主 管 要 求 将 一 些 技 术 文 件 放 在 网 页 上, 且 只 能 让MIS 的 员 工 浏 览。 这 就 涉 及 到 如 何 对 网 页 保 密 的 问 题。

   最 初 我 借 助Frontpage 和Vbscript 设 计 了 一 种 方 案, 链 接MIS 技 术 页( 此 处 预 设 为actpwdrst.htm) 之 前, 先 链 接actpwd.htm 输 入 名 称 和 密 码( 此 处 名 称 和 密 码 都 预 设 为“mis”), 只 有 正 确 输 入 后, 才 能 链 接 到actpwdrst.htm。 以 下 是 它 们 的 代 码。

   Actpwd.htm 代 码 如 下:

< html >
< head >
< title > 密 码< /title >
< /head >
< body >
< form name=“form1” >
< input type=“hidden”
name=“VTI-GROUP”_ value=“0” >
< div align=“center” >< center >< p >
名 称< input type =“text”
name=“T1” size=_“20” >
密 码< input type =“password”
name=“T2”_ size=“20” >
< input type=“button” value=“
确 认”_ name=“B1” >
< /p >< /center >< /div >
< /form >
< p >
< script language=“vbscript” >
< !-
sub b1_onclick()
if form1.t1.value=“mis” and_ form1.t2.value=“mis” then
document.location=_“actpwdrst.htm”
else
m1=msgbox(“ 密 码 错 误_
”,0+48, “Warring”)
end if
end sub
// -- >
< /script >
< /p >
< /body >
< /html >
Actpwdrst.htm 代 码 如 下:
< html >
< head >
< title > 密 码< /title >
< /head >
< body >
< p align=“center” >
< font face=“ 标 楷 体” size=“7” color=“0000ff” >
< strong >
你 已 成 功 登 录 !
< /strong >
< /font >
< /p >
< /body
< /html >

  细 心 的 朋 友 可 能 已 发 现 这 种 方 案 的 不 可 靠 性 — — 输 入 和 判 断 都 在actpwd.htm 中 完 成, 不 管 输 入 的 名 称 和 密 码 是 不 是 正 确 的, 只 要 记 住 了actpwdrst.htm 所 在 的URL, 根 本 就 不 需 要 通 过actpwd.htm 就 可 直 接 链 接actpwdrst.htm。 所 以 这 种 方 案 的 保 密 系 数 就 不 是 很 好。
  下 面 看 看 采 用 ASP 设 计 的 方 案。 链 接MIS 技 术 页( 此 处 预 设 为 asppwdrst.asp) 之 前, 先 链 接asppwd.asp 输 入 名 称 和 密 码( 此 处 名 称 和 密 码 都 预 设 为“mis”), 只 有 正 确 输 入 后, 才 能 链 接 到asppwdrst.asp。 以 下 是 它 们 的 代 码。

Asppwd.asp 代 码 如 下:
< html >
< body >
< form name=“form1” action=
“asppwdrst.asp” method_
=“POST” >
< input type=“hidden” name=
“VTI-GROUP” value=_“0” >
< div align=“center” >< center >< p >
名 称< input type=“text”
name=“T1” size=“20” >
密 码< input type =
“password” name=“T2” size=_“20” >
< input type=“submit” value=
“ 确 认” name=_“B1” >
< /p >< /center >< /div >
< /form >
< /body >
< /html >
Asppwdrst.asp 代 码 如 下:
< html >
< % if rtrim(request.form(“t1”))=
“mis” and_ rtrim(request.form(“t2”))=
“mis” then % >
< body >
< p align=“center” >< font face=
“ 标 楷 体” size=“7”_ color=“#0000ff” >
< strong > 你 已 成 功 登 录 !
< /strong >< /font >< /p >
< /body >
< % else % >
< body >
< p align=“center” >< font face=
“ 标 楷 体” size=“7”_ color=“#0000ff” >
< strong > 请 输 入 正 确 的 用 户 名 和 密 码
< /strong >< /font >< /p >
< /body >
< % end if % >
< /html >

  在 这 个 方 案 里asppwd.asp 只 提 供 输 入 的 功 能, 而 名 称 和 密 码 的 确 认 工 作 由asppwdrst.asp 来 做。 这 样 即 使 您 记 住 了asppwdrst.asp 所 在 的URL, 也 看 不 到 具 体 的 内 容。 所 以 用 这 种 方 案 设 计 的 网 页 保 密 系 数 就 很 高。

对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 

回复:asp漏洞


对个人来讲,统计,仪器,高速的计算机可以让人们得到大量充裕的时间。
这个社会中,更不可缺的是具备现代化的管理经验。
gototop
 
12   2  /  2  页   跳转
页面顶部
Powered by Discuz!NT