众所周知,ASP双层结构(Web页面一服务器)的特点,使得ASP程序开发效率高,易学易用。也正因如此,ASP成为了目前最流行的后台语言之一。但ASP的双层结构也使得ASP网站的安全性大打折扣。数据库连接代码直接写于ASP页面当中,稍懂网页基础的编程者就可以轻易盗取ASP网站数据库的用户名和密码,从而进一步得到网站的最高管理权限,由此引起的后果将是不堪设想的!为此,我们给大家介绍一下如何通过现有的脚本加密技术实现ASP多层安全机制,使ASP网站的安全性大大提高。
一、使用JavaScript脚本对网页进行基本加密
JavaScript是一种新的描述语言,它可以被嵌入HTML的文件之中。透过JavaScript可以做到回应使用者的需求事件(如:form的输入)而不用任何的网路来回传输资料,所以当一位使用者输入一项资料
时,它不用经过传给伺服端(server)处理,再传回来的过程,而直接可以被客户端( client)的应用程式所处理。可以将它想象成一个在客户机上运行的程序。
利用JavaScript我们可以对网页进行初步加密。
1、利用javaScript禁止右键功能
< script language;一JavaScripC>
<! 一一
document.onmousedown=click
function click()
{
if( event.button= =2){alert(’不准查看源文件’)}
if( evcnt.button==3){ alert(’不准查看源文件’)}
}
//一一>
< /script>
以上这段程序原理是:首先捕捉鼠标按键信息,然后对其进行判断,如果是右键则弹出警告窗口。这样做的目的是:禁止快捷菜单弹出,使黑客不能通过点击查看源文件就能轻易看到静态网页的源码。
2、利用JavaScript实现口令密码校验
< acript IANGUAGE=一JAVASCRJPT>
<! ——
loopy()
fmction loopy()
{
var pass=""
while (paas!="login")//login为密码
{ pass=prompt("请输入密码")
}
alert("登录成功")
}
//——>
< /script>
此法用了while()死循环,如果密码不对,连用右键和菜单查看源文件的机会都没有,只有关闭JavaScript了。
3、利用JaVaScript实现只能输入三次密码
< txmpt IANGUAGE="JavaScript">
<! - - Begin
function password()
{
var testV=1;
var pass1=prompt("请输入密码:",);
while (testV<3)
{
if(! pass1)
histmy.back();
if (pass1=="password")//password为密码
alert("登录成功!");
window.location="time.html"//正确链接的URL.html
break;
}
testV+=1;
Var pass1=prompt("密码不对,请重新输入");
}
if (pass1="password"&ttestV==3)
history·go( -1);//失败则返回前一个文档,可用window.location="***/***.htm"替换
retum"';
}
document.write( password());
</scriy>
二、综合使用网页制作技术与JavaScript脚本对网页进行多层加密
用JavaScript对网页进行加密的好处在于不需要特别的后台程序(如:ASP,JSP,PHP,CGI)支持,也就是说不需要数据库对其进行支持。然而,用JavaScript对网页文件加密是非常容易被人破解的,比如:在口令密码校验的这个例子当中,只要网页盗用者有一点编程基础,就很容易获取登录密码。
具体步骤:查看网页源代码,找出JavaScript所设置的网页密码,登录。
对这样一种情况的不完全解决方法是:将多种JavaScript保密方法综合运用。下面给出一个具体的解决方案。
步骤一:用Frontpage 2000 XP或以上版本新建一个网页,取名为:index.htm。
步骤二:点击:插入一内嵌式网页框架一新建一取名为:iframe.htm;设置内嵌式网页框架属性,将长和宽均设置为100%。
步骤三:将以下这段代码插入iframe的<body>和< /body>之间任何位置。
< acriy language= NJrwaScriptN>
<! 一一
document.onmouaedovm=click
function cliclc()
{
if(event.button==2){alert("不准查看源文件")}
if(event.button==3){alert("不准查看源文件")}
}
//一一>
< /script>
这样做的目的何在?又会有什么功能?下面将详细说明。
步骤一的目的:包含一个内嵌式网页框架,这样一来,在IE中点击查看一源文件时看到的就是in.dcx.htm这个页面的源代码,而不是iframe.htm的源代码。而我们真正想保护的内容在iframe.htm当中。
步骤二的目的:使iframe.htm和index.htm看起来像一个页面。
步骤三的目的:禁止了鼠标在iframe.htm范围中鼠标右键的能力。想要看源代码只有通过在IE中点击查看一源文件才能实现,然而由于内嵌式网页框架的存在,这时看到的源代码只是index.htm的源代码,
而这个页面当中没有任何有用的信息。
如果要对一个页面进行登录询问,只需将上例中的JavaScript代码换成以下代码就可。
< script lANGUAGE ="JAVASCRIPT ">
<!_一一
loopy()
function loopy()
{
varpass=""
while(pass!="login") //login为密码
{
pass=prompt("请输入密码")
}
alert("登录成功")
}
//一一>
< /script>
三、用Flash的Action Script脚本对特定的页面连接进行完全保护
随着Flash技术的不断发展,Flash的作用再也不仅仅局限于替代GIF的一种动画格式,Flash中对Action Script脚本的支持使得我们能够运用它对特定连接进行有效保护。
界面如上述所示。需要注意的是:文本框a、文本框b为动态文本框,用于传送变量。登录为按钮,用于触发Action Script脚本。具体步骤如下:
主界面状态下—对登录点击右键一点击动作一在AS专家模式下输入以下代码:
if(a=="用户名"and b=="密码")tben
{
getud=="成功的连接地址"
}
else
{
geltud=="失败的连接地址"
}
导出动画SWF即可,最后将这个F1ash插入到网页中即可完成。由于Flash不具有源代码的特点,所以对于保护特定连接来说可以起到很好的效果。如果想查看源文件,那么看到Flash的源文件只是:
<embed src="flash名"></embed>这样的HTML代码,没有丝毫的价值。
四、组合运用多种脚本对ASP网站进行多层加密
按照上述加密方法,我们只要将它们组合运用就可以实现ASP网站的多重安全机制。具体步骤如下:
步骤一:用Frontpage 2000 XP或以上版本新建一个网页。取名为:index.htm。
步骤二:点击:插入一内嵌式网页框架一新建一取名为:iframe.htm一设置内嵌式网页框架属性,将长和宽均设置为100%。
步骤三:将以下这段代码插入iframe的<body>和< /body>之间任何位置。
< script language=一JaV8Scrip,>
<! 一一
document.onmousedown=click
function click()
{
if(event. bufion==2){alert("不准查看源文件")}
if(event.button==3){alert("不准查看源文件")}
}
//一一>
< /script>
这样做的目的是防止他人查看ASP源文件,也就是说可以防止他人盗取数据库连接文件的密码和帐户。
步骤四:在数据库中,对登录权限(用户名或密码)进行加密。这样的加密方法很多,如:对每个字符取其ASCII码,然后全部后移或前进一位,再还原成字符。这样,即使黑客能攻人数据库,也不能轻易得到网站的最高管理权限。
小知识之ASCII
ASCII是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC646。