插件名称:让pjblog后台更安全,增加后台通过二级密码登入功能 (
多谢戒聊大叔的热情帮助,功能已全部完善,安全行性可测)
=================================================
2008/05/01 更新 经测试,请把升级文件升级后,将类型“是/否”改为“文本”,然后删除3个字段内的值就不会出现原二级密码的错误。
==================================================
===========================================================================
(2008/04/16更新)
现将二级密码和密码保护2个功能文件打包下载,请仔细阅读里面说明,按相应操作进行。
基本上如果没有修改过里面文件内容的可以直接覆盖,没有问题的。
下载:
二级密码和密码保护功能文件.rar (13.18 KB)
===========================================================================
插件作者:evio
发布时间:2008-04-13
适用版本:V2.75
修改源码:是
下载地址:升级文件:
update.rar (1018 Bytes)
插件演示:
http://www.levevio.cn/evio/article.asp?id=144
插件简介:让我们的pjblog后台更安全,增加后台二级密码等入功能.
使管理员登入后台时必须提供二级密码才可登入,类似独立密码。
在用户资料页面,只有管理员才出现二级密码修改选项,其他普通用户没有该选项。
这使得后台更加安全,即使被猜到管理员密码,也无法登入后台。
4/14前修改的朋友,请修改回来,修正了管理员直接未认证就可以修改二级密码的BUG
管理员页面:

普通用户页面:
修改的文件只有2个 member.asp control.asp
修改方法入下:
打开control.asp
找到
复制内容到剪贴板
代码:
<div style="padding:16px;padding-top:40px"><b style="margin-left:-76px;">管理员密码: </b>
<input name="adpass" type="password" size="20" style="border:1px solid #999"/></div>下面增加
复制内容到剪贴板
代码:
<div style="padding:16px;padding-top:0px"><b style="margin-left:-76px;">二级密码: </b>
<input name="sepass" type="password" size="20" style="border:1px solid #999"/></div>打开member.asp
找到
复制内容到剪贴板
代码:
<tr><td align="right" width="85"><strong>密码重复:</strong></td><td align="left" style="padding:3px;"><input name="Confirmpassword" type="password" size="18" class="userpass" maxlength="16"/> 必须和上面的密码一样</td></tr>下面加入
复制内容到剪贴板
代码:
<%
dim sepassword1
sepassword1=blog_Mem("mem_Sepassword")'sepassword1为原数据库内的值
if stat_admin then%>
<%if (sepassword1<>"" or sepassword1<>null or sepassword1<>empty) then
%>
<tr><td align="right" width="85"><strong>原二级密码:</strong></td><td align="left" style="padding:3px;"><input name="sepassword2" type="password" size="18" class="userpass" maxlength="16"/><font color="#FF0000"> *</font></td></tr>
<tr><td align="right" width="85"><strong>新二级密码:</strong></td><td align="left" style="padding:3px;"><input name="sepassword3" type="password" size="18" class="userpass" maxlength="16"/><font color="#FF0000"> *</font></td></tr><%else%>
<tr><td align="right" width="85"><strong>二级密码:</strong></td><td align="left" style="padding:3px;"><input name="sepassword" type="password" size="18" class="userpass" maxlength="16"/><font color="#FF0000"> *</font></td></tr><%end if%><%end if%>
找到
复制内容到剪贴板
代码:
dim UID,username,Oldpassword,password,Confirmpassword,Gender,email,homepage,QQ,HideEmail,checkUser后面直接加上
复制内容到剪贴板
代码:
,sepassword,sepassword1,sepassword2,sepassword3找到
复制内容到剪贴板
代码:
Confirmpassword=trim(CheckStr(request.form("Confirmpassword")))下面加上
复制内容到剪贴板
代码:
if stat_admin then
if (sepassword1<>"" or sepassword1<>null or sepassword1<>empty) then
sepassword2=trim(CheckStr(request.form("sepassword2")))
sepassword3=trim(CheckStr(request.form("sepassword3")))
else
sepassword=trim(CheckStr(request.form("sepassword")))
end if
end if找到
复制内容到剪贴板
代码:
if password<>Confirmpassword then
ReInfo(0)="错误信息"
ReInfo(1)="<b>密码验证失败!请重新输入。</b>
<a href=""javascript:history.go(-1);"">单击返回</a>"
ReInfo(2)="ErrorIcon"
SaveMem=ReInfo
exit function
end if
end if下面加上
复制内容到剪贴板
代码:
if stat_admin then
if (sepassword1<>"" or sepassword1<>null or sepassword1<>empty) then
if len(sepassword2)=0 or (len(sepassword2)<6 or len(sepassword2)>16) then
ReInfo(0)="错误信息"
ReInfo(1)="<b>请输入6到16位原二重密码!</b>
<a href=""javascript:history.go(-1);"">单击返回</a>"
ReInfo(2)="WarningIcon"
SaveMem=ReInfo
exit function
end if
if len(sepassword3)=0 or (len(sepassword3)<6 or len(sepassword3)>16) then
ReInfo(0)="错误信息"
ReInfo(1)="<b>请输入6到16位新二重密码!</b>
<a href=""javascript:history.go(-1);"">单击返回</a>"
ReInfo(2)="WarningIcon"
SaveMem=ReInfo
exit function
end if
else
if len(sepassword)=0 or (len(sepassword)<6 or len(sepassword)>16) then
ReInfo(0)="错误信息"
ReInfo(1)="<b>请输入6到16位二重密码!</b>
<a href=""javascript:history.go(-1);"">单击返回</a>"
ReInfo(2)="WarningIcon"
SaveMem=ReInfo
exit function
end if
end if
end if 找到
复制内容到剪贴板
代码:
set checkUser=conn.execute("select top 1 * from blog_Member where mem_id="&UID&" and mem_Name='"&CheckStr(memName)&"'")
if checkUser("mem_Password")<>SHA1(Oldpassword&checkUser("mem_salt")) then
ReInfo(0)="错误信息"
ReInfo(1)="<b>用户名与密码错误</b>
<a href=""javascript:history.go(-1);"">请返回重新输入</a>"
ReInfo(2)="ErrorIcon"
SaveMem=ReInfo
exit function下面加上
复制内容到剪贴板
代码:
else
dim strSalt
strSalt=checkUser("mem_salt")然后下面的从Conn.Execute开始到最后的所有语句替换成
复制内容到剪贴板
代码:
Conn.Execute("update blog_member set mem_Sex="&Gender&",mem_Email='"&email&"',mem_HideEmail="&HideEmail&",mem_HomePage='"&homepage&"',mem_QQ='"&QQ&"',mem_mbquestion='"&mbquestion&"',mem_mbanswer='"&mbanswer&"' where mem_id="&UID&" and mem_Name='"&CheckStr(memName)&"'")
SQLQueryNums=SQLQueryNums+1
if len(password)>0 then
password=SHA1(password&strSalt)
if stat_admin then
if (sepassword1<>"" or sepassword1<>null or sepassword1<>empty) then
'response.write sepassword1&"
"
'response.write SHA1(sepassword2&strSalt)
'response.end
if sepassword1<>SHA1(sepassword2&strSalt) then
response.write "<Script language='JavaScript'>window.alert('错误!');history.back(-1);</Script>"
response.end
end if
sepassword3=SHA1(sepassword3&strSalt)
Conn.Execute("update blog_member set mem_Password='"&password&"',mem_Sepassword='"&sepassword3&"',mem_salt='"&strSalt&"' where mem_id="&UID&" and mem_Name='"&CheckStr(memName)&"'")
else
sepassword=SHA1(sepassword&strSalt)
Conn.Execute("update blog_member set mem_Password='"&password&"',mem_Sepassword='"&sepassword&"',mem_salt='"&strSalt&"' where mem_id="&UID&" and mem_Name='"&CheckStr(memName)&"'")
end if
else
Conn.Execute("update blog_member set mem_Password='"&password&"',mem_salt='"&strSalt&"' where mem_id="&UID&" and mem_Name='"&CheckStr(memName)&"'")
end if
SQLQueryNums=SQLQueryNums+1
logout(true)
ReInfo(0)="用户修改成功"
ReInfo(1)="<b>你的资料已经修改成功</b>
由于你更改了密码所以必须 <a href=""login.asp"">重新登录</a>"
ReInfo(2)="MessageIcon"
SaveMem=ReInfo
Session(CookieName&"_LastDo")="EditUser"
exit function
end if
getInfo(2)
ReInfo(0)="用户修改成功"
ReInfo(1)="<b>你的资料已经修改成功</b>
<a href=""default.asp"">返回首页</a>"
ReInfo(2)="MessageIcon"
SaveMem=ReInfo
Session(CookieName&"_LastDo")="EditUser"
end function %>最后用数据库文件升级
-----------------------
同样,有什么BUG,请在我站上留言
http://www.levevio.cn/evio/LoadMod.asp?plugins=AJAXGuestBook5
[
本帖最后由 evio 于 2008-5-3 14:50 编辑 ]