书签 分享 收藏 举报 版权申诉 / 9

类型asp加密.docx

  • 文档编号:28986828
  • 上传时间:2023-07-20
  • 格式:DOCX
  • 页数:9
  • 大小:19.69KB

-

subb1_onclick()

ifform1.t1.value=“mis”and_form1.t2.value=“mis”then

document.location=_“actpwdrst.htm”

else

m1=msgbox(“密码错误_

”,0+48,“Warring”)

endif

endsub

//-->

Actpwdrst.htm代码如下:

密码

你已成功登录!

  细心的朋友可能已发现这种方案的不可靠性——输入和判断都在actpwd.htm中完成,不管输入的名称和密码是不是正确的,只要记住了actpwdrst.htm所在的URL,根本就不需要通过actpwd.htm就可直接链接actpwdrst.htm。

所以这种方案的保密系数就不是很好。

  下面看看采用ASP设计的方案。

链接MIS技术页(此处预设为asppwdrst.asp)之前,先链接asppwd.asp输入名称和密码(此处名称和密码都预设为“mis”),只有正确输入后,才能链接到asppwdrst.asp。

以下是它们的代码。

Asppwd.asp代码如下:

“asppwdrst.asp”method_

=“POST”>

“VTI-GROUP”value=_“0”>

名称

name=“T1”size=“20”>

密码

“password”name=“T2”size=_“20”>

“确认”name=_“B1”>

Asppwdrst.asp代码如下:

<%ifrtrim(request.form(“t1”))=

“mis”and_rtrim(request.form(“t2”))=

“mis”then%>

“标楷体”size=“7”_color=“#0000ff”>

你已成功登录!

<%else%>

“标楷体”size=“7”_color=“#0000ff”>

请输入正确的用户名和密码

<%endif%>

  在这个方案里asppwd.asp只提供输入的功能,而名称和密码的确认工作由asppwdrst.asp来做。

这样即使您记住了asppwdrst.asp所在的URL,也看不到具体的内容。

所以用这种方案设计的网页保密系数就很高。

ASP程序密码验证漏洞

这个漏洞其实是很多网站都存在的,特别是提供用ASP编写的聊天室,BBS等(其它的语言我不懂,但我想也会存在这方面的洞的。

)。

  一般来说,我们在验证用户是否合法时,会用如下的语句:

  setdb=server.CreateObject("ADOdb.recordset")

  sqlstr=select*fromtablewhereuser=“"&request("user")&"“andpassword=“"&request("password")&"“"

  db.opensqlstr,"DSN=aa;",1然后检测得到的表是否为空,如果为空则用户非法,如果不为空则用户是合法的。

  ifdb.eofanddb.bofthen

  ok="no"

  else

  ok="yes"

  endif这段程序单从技术角度看规范的,但从安全角度看就存在一个非常大的洞。

因为我们可以构造一个特殊的用户口令和用户名从而进入受保护的系统内部。

  user=“aa“oruser<>“aa“

  password=“aa“orpassword<>“aa“

  相应的在浏览器端的用户名框内写入:

aa“oruser<>“aa

  口令框内写入:

aa“orpassword<>“aa,注意这两个字符串两头是没有“的。

  这样就可以成功的骗过系统而进入。

  理论虽然如此,但要实践是非常困难的,下面两个条件都必须具备。

  1.你首先要能够准确的知道系统在表中是用哪两个字段存储用户名和口令的,只有这样你才能准确的构造出这个进攻性的字符串。

实际上这是很难猜中的。

  2.系统对你输入的字符串不进行有效性检查。

  从这儿可以看出源码泄露的漏洞有时是致命的!

  我想出的解决办法:

  1.就象yexiaolu所说的,分开写,可以看看他的贴子。

  2.将存储用户名和用户口令的字段取两个毫不相干的名字,让攻击者猜不中。

  3.对用户输入的数据进入有效性检查,如替换掉“等。

  4.可以考虑对口令进行简单的加密,如将输入的口令字符串变换一下字符串中字符的位置等都可以有效的防止这种进攻。

  5.最重要的一点,不要泄露你的源码!

ACCESS数据库防止下载

怎样防止mdb数据库被下载一直是用access的程序员的一大头疾。

现在总结如下有效方法:

1.修改数据库名。

这是常用方法,将数据库名该成怪异名字或长名字,以防别人猜测。

一旦被人猜到,别人还是能下载数据库文件,但几率不大。

如将数据库database.mdb改成dslfjds$^&ijjkgf.mdb等

2.修改数据库后缀。

一般改成database.asp、database.asa、database.inc、database.cgi、database.dll等等,注意要在IIS中设置这些后缀的文件不能被解析。

3.将数据库database.mdb改成#database.mdb。

这是最简单有效的办法。

分析:

假设别人得到你的数据库地址串将是:

但实际上他得到是:

因为#在这里起到间断符的作用,地址串遇到#号,自动认为访问地址串结束。

注意:

不要设置目录可访问。

用这种方法,不管别人用何种工具都无法下载,如flashget,网络蚂蚁等。

注:

只要数据库文件名任何地方含有'#',别人都无法正常下载。

同理,空格号也可以起到'#'号作用,但必须是文件名中间出现空格。

4.将数据库连接文件放到其他虚拟目录下。

5.将Access数据库加密。

以上只列出常用之法,为增加保险性,可以几种方法同时使用。

 

压缩并修复Access数据库

CompactandRepair

Youcanusethe"CompactandRepair"functioninAccessfromASPcode.Thefollowingcodeisanexampleof

howthiscanbedone.Notethatwhenyoudecideto"CompactandRepair"yourAccessdatabase,some

autonumberscanbechanged.Accessmakesallautonumbersconsecutive.

Thiscodeusesonedatabase,butI'msurethecodecaneasilybechangedsothatthelistboxdisplays,for

example,allthedatabasesinonefolder.

<%

ConstJet_Conn_Partial="Provider=Microsoft.Jet.OLEDB.4.0;Datasource="

DimstrDatabase,strFolder,strFileName

'#################################################

'#Editthefollowingtwolines

'#Definethefullpathtowhereyourdatabaseis

strFolder="F:

\InetPub\wwwroot\_db\"

'#Enterthenameofthedatabase

strDatabase="YourAccessDatabase.mdb"

'#Stopeditinghere

'##################################################

PrivateSubdbCompact(strDBFileName)

DimSourceConn

DimDestConn

DimoJetEngine

DimoFSO

SourceConn=Jet_Conn_Partial&strFolder&strDatabase

DestConn=Jet_Conn_Partial&strFolder&"Temp"&strDatabase

SetoFSO=Server.CreateObject("Scripting.FileSystemObject")

SetoJetEngine=Server.CreateObject("JRO.JetEngine")

WithoFSO

IfNot.FileExists(strFolder&strDatabase)Then

Response.Write("NotFound:

"&strFolder&strDatabase)

Stop

Else

If.FileExists(strFolder&"Temp"&strDatabase)Then

Response.Write("Somethingwentwronglasttime"_

&"Deletingolddatabase...Pleasetryagain")

.DeleteFile(strFolder&"Temp"&strDatabase)

EndIf

EndIf

EndWith

WithoJetEngine

.CompactDatabaseSourceConn,DestConn

EndWith

oFSO.DeleteFilestrFolder&strDatabase

oFSO.MoveFilestrFolder&"Temp"_

&strDatabase,strFolder&strDatabase

SetoFSO=Nothing

SetoJetEngine=Nothing

EndSub

PrivateSubdbList()

DimoFolders

SetoFolders=Server.CreateObject("Scripting.FileSystemObject")

Response.Write("")

ForEachItemInoFolders.GetFolder(strFolder).Files

IfLCase(Right(Item,4))=".mdb"Then

Response.Write("

&""">"&Replace(Item,strFolder,"")&"")

EndIf

Next

Response.Write("")

SetoFolders=Nothing

EndSub

%>

<%

'Compactdatabaseandtelltheuserthedatabaseisoptimized

SelectCaseRequest.form("cmd")

Case"Compact"

dbCompactRequest.form("DBFileName")

Response.Write("Database"&Request.form("DBFileName")&"isoptimized.")

EndSelect

%>

Compactandrepairdatabase

<%dbList%>

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
asp 加密
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:asp加密.docx
链接地址:https://www.bdocx.com/doc/28986828.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开