asp加密.docx
- 文档编号:28986828
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:9
- 大小:19.69KB
asp加密.docx
《asp加密.docx》由会员分享,可在线阅读,更多相关《asp加密.docx(9页珍藏版)》请在冰豆网上搜索。
asp加密
一段对密码进行加密的脚本
//EncryptedPasswordscript-ByRobHeslop
//ScriptfeaturedonDynamicDrive
//Visit
functionsubmitentry(){
password=document.password1.password2.value.toLowerCase()
username=document.password1.username2.value.toLowerCase()
passcode=1
usercode=1
for(i=0;i passcode*=password.charCodeAt(i); } for(x=0;x usercode*=username.charCodeAt(x); } //CHANGETHENUMBERSBELOWTOREFLECTYOURUSERNAME/PASSWORD if(usercode==134603040&&passcode==126906300) //CHANGETHENUMBERSABOVETOREFLECTYOURUSERNAME/PASSWORD { window.location=password+".htm"} else{ alert("password/usernamecombinationwrong")} } Enterusername: Enterpassword: ASP实现网页保密的两种方法 本人在维护公司内部网站时碰到一个实际问题——MIS主管要求将一些技术文件放在网页上,且只能让MIS的员工浏览。 这就涉及到如何对网页保密的问题。 最初我借助Frontpage和Vbscript设计了一种方案,链接MIS技术页(此处预设为actpwdrst.htm)之前,先链接actpwd.htm输入名称和密码(此处名称和密码都预设为“mis”),只有正确输入后,才能链接到actpwdrst.htm。 以下是它们的代码。 Actpwd.htm代码如下:
name=“VTI-GROUP”_value=“0”> 名称 name=“T1”size=_“20”> 密码 name=“T2”_size=“20”> 确认”_name=“B1”>
-
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 %>
<%dbList%>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- asp 加密