发布人:向导
补丁名:垃圾引用防御补丁
发布时间:2007-1-4
版本号:第3版
适用版本:PJblog2.6
原作者:向导
演示地址:http://www.hljsh.com/
下载地址:http://bbs.pjhome.net/attachment.php?aid=2143
插件简介:能有效防止垃圾引用。加密递交地址,第2版增加KEY验证,并每小时自动更换一次key。
本版本不修改数据库,只修改了4个文件,并支持静态页模式!
效果
引用通告地址:trackback.asp?tbID=JNKRQOF8&key=JOKNPNKOQPMPPMC0
具体安装方法如下:
===========================================================
文件trackback.asp
查找
tbID=CheckStr(Request.QueryString("tbID"))
替换成
tbID=Decrypt(CheckStr(Request.QueryString("tbID")))
查找
IfNot(IsInteger(Request.QueryString("tbID"))ANDIsInteger(Request.QueryString("logID")))Then
替换成
IfNotIsInteger(Decrypt(Request.QueryString("tbID")))ANDIsInteger(Request.QueryString("logID"))Then
查找
Whereblog_ID="&logID&"ANDtb_ID="&CheckStr(Request.QueryString("tbID"))
替换成
Whereblog_ID="&logID&"ANDtb_ID="&Decrypt(CheckStr(Request.QueryString("tbID")))
**有2处
查找
'==================================
'引用通告处理页面
'更新时间:2006-6-1
'==================================
在下面加入
dimkeys,keys1
keys=Request.QueryString("key")
keys1=Encrypt((year(now))&(Month(now))&(day(now))&hour(now()))
ifkeys<>keys1then
Response.c
Response.write"<?xmlversion=""1.0""encoding=""UTF-8""?><?xml-stylesheettype=""text/xsl""href=""tb.xsl""?>"
%>
<response><error>1</error><message>您递交的信息已过期.请检查...</message></response>
<%
else
dimstrget
strget=trim(Request.QueryString("tbID"))
iflen(strget)>8then
Response.c
Response.write"<?xmlversion=""1.0""encoding=""UTF-8""?><?xml-stylesheettype=""text/xsl""href=""tb.xsl""?>"
%>
<response><error>1</error><message>您递交的信息有错误.请检查...</message></response>
<%
else
dimtbIDs
tbIDs=Decrypt(CheckStr(Request.QueryString("tbID")))
iftbIDs<1then
Response.c
Response.write"<?xmlversion=""1.0""encoding=""UTF-8""?><?xml-stylesheettype=""text/xsl""href=""tb.xsl""?>"
%>
<response><error>1</error><message>您递交的信息有错误.请检查...</message></response>
<%
else
查找
'Trackbackresponsefunction上面加入
endif
endif
endif
********可以不换***********
查找
Response.Redirect("search.asp?searchType=trackback")
替换成
Response.c
Response.write"<?xmlversion=""1.0""encoding=""UTF-8""?><?xml-stylesheettype=""text/xsl""href=""tb.xsl""?>"
%>
<response><error>1</error><message>日志ID错误.请检查......</message></response>
<%
查找
<response><error>1</error><message>日志没有被引用.</message></response>
替换成
<response><error>1</error><message>日志(ID=<%Response.writetbID%>)没有被引用.</message></response>
********可以不换***********
===========================================================
文件classcls_article.asp
查找
引用通告地址:<ahref="<%=(SiteURL&"trackback.asp?tbID="&id)%>"target="_blank"><%=(SiteURL&"trackback.asp?tbID="&id)%></a>
替换成
引用通告地址:<ahref="<%=(SiteURL&"trackback.asp?tbID="&Encrypt(id)&"&key="&Encrypt((year(now))&(Month(now))&(day(now))&hour(now())))%>"target="_blank"><%=(SiteURL&"trackback.asp?tbID="&Encrypt(id)&"&key="&Encrypt((year(now))&(Month(now))&(day(now))&hour(now())))%></a>
查找
SubShowComm(LogID,comDesc,DisComment)
在下面添加
dimk1
k1=Encrypt((year(now))&(Month(now))&(day(now))&hour(now()))
查找
href=""trackback.asp?action=deltb&tbID="&commArr(6,Pcount)&"&logID="&LogID&"""
替换成
href=""trackback.asp?action=deltb&tbID="&Encrypt(commArr(6,Pcount))&"&logID="&LogID&"&key="&k1&"""
查找
TempArticle=Replace(TempArticle,"<"&"%ST(A)%"&">","")
替换成
dimk1
k1=Encrypt((year(now))&(Month(now))&(day(now))&hour(now()))
TempArticle=Replace(TempArticle,"<"&"%ST(A)%"&">","")
TempArticle=Replace(TempArticle,"<"&"%ST(KEY)%"&">",k1)===========================================================
文件classcls_logAction.asp
查找
Temp1=Replace(Temp1,"<$trackback$>",SiteURL&"trackback.asp?tbID="&LogID)
替换成
Temp1=Replace(Temp1,"<$trackback$>",SiteURL&"trackback.asp?tbID="&Encrypt(LogID)&"&key="&"<"&"%ST(KEY)%"&">")===========================================================
文件commonfunction.asp
在文件最后,%>的上面添加
FunctionEncrypt(theNumber)
OnErrorResumeNext
Dimn,szEnc,t,HiN,LoN,i
n=CDbl((theNumber+1570)^2-7*(theNumber+1570)-450)
Ifn<0ThenszEnc="R"ElseszEnc="J"
n=CStr(abs(n))
Fori=1ToLen(n)step2
t=Mid(n,i,2)
IfLen(t)=1Then
szEnc=szEnc&t
ExitFor
EndIf
HiN=(CInt(t)And240)/16
LoN=CInt(t)And15
szEnc=szEnc&Chr(Asc("M")+HiN)&Chr(Asc("C")+LoN)
Next
Encrypt=szEnc
EndFunction
FunctionDecrypt(theNumber)
OnErrorResumeNext
Dime,n,sign,t,HiN,LoN,NewN,i
e=theNumber
IfLeft(e,1)="R"Thensign=-1Elsesign=1
e=Mid(e,2)
NewN=""
Fori=1ToLen(e)step2
t=Mid(e,i,2)
IfAsc(t)>=Asc("0")AndAsc(t)<=Asc("9")Then
NewN=NewN&t
ExitFor
EndIf
HiN=Mid(t,1,1)
LoN=Mid(t,2,1)
HiN=(Asc(HiN)-Asc("M"))*16
LoN=Asc(LoN)-Asc("C")
t=CStr(HiNorLoN)
IfLen(t)=1Thent="0"&t
NewN=NewN&t
Next
e=CDbl(NewN)*sign
Decrypt=CLng((7+sqr(49-4*(-450-e)))/2-1570)
EndFunction
================================================
演示到我的BLOG看。我网络很慢。请您忍耐。
没有修改过这4个文件的用户可以下载下面的覆盖即可。
================================================
使用静态页的需要到后台从新建立所有日记。
不知道还有那不对的。希望大家踊跃测试,拍砖。
点击下载此文件