公告板
 [2007-07-27]F2Blog将由F2.Cont小组延续生命。
 [2006-12-15]F2.Cont小组请访问www.f2cont.com
 [2006-12-15]严重潜水时期,汉化问题不妨提问,汉化请求直接无视...
  • 1 
预览模式: 普通 | 列表

Blog更新日记070526

转自:PJBlog官方技术支持论坛


PJBLOG严重外部提交漏洞以及广告机防治方案




很难理解为什么会有那么多的广告机,而且即使验证码显示为空白照样会有很多广告。最后终于发现是因为PJBLOG存在严重外部提交漏洞。

漏洞成因:







blogcomm.asp文件对验证码判断不严格。

如果用户没有请求过GetCode.asp文件,那么服务器端Session里面的GetCode值为空,而用户提交的数据里面验证码也为空,这样刚好空等于空,反而通过了验证码验证。


修正方式:

修改blogcomm.asp文件,在94行的If判断表达式中加入









or IsEmpty(Session("GetCode"))


完整语句:







IF (memName=empty or blog_validate=true) and (cstr(lcase(Session("GetCode")))<>cstr(lcase(validate)) or IsEmpty(Session("GetCode"))) then


留言本的在bookaction.asp的80行









IF cstr(lcase(Session("GetCode")))<>cstr(lcase(validate) or IsEmpty(Session("GetCode"))) then

标签:  PJBlog 更新

Blog更新日记061202

更新内容一:
验证码自刷新功能,方法来源:http://bbs.pjhome.net/thread-9871-1-1.html
更新内容二:
首页上直接显示登陆面板,方法来源:http://bbs.pjhome.net/thread-11465-1-3.html
更新内容三:
文章页面添加关键字,方法来源:http://blog.theosoft.net/article.asp?id=24
更新内容四:
根据标签显示相关文章,方法来源:http://wbc.bkkss.com/article.asp?id=102
更新内容五:
增加页内分页功能,更换FCKeditor编辑器,方法来源:http://stanley.cpf-china.com/article.asp?id=175
更新内容六:
FCKeditor自动插入Flash之外的媒体,方法来源:http://bbs.pjhome.net/viewthread.php?tid=11226&pid=69003&page=1&extra=page%3D1#pid69003
更新内容七:
更换个性短语插件,方法来源:http://www.sweethoney.cn/article.asp?id=82
标签:  PJBlog 更新
今天一上来就看到68个垃圾引用,全是广告,自己删得心烦,真气愤~~网上总有一群长得像人的野生动物天天无聊的在各大小博客网站发垃圾广告,以前大多都是评论形式,可是,现在的评论基本上要验证码,那群吃X大的人型生物又绞尽脑汁de想法设法去了,终于,无辜的“引用“功能”被无情的利用了~~

之前我为了省事,直接把Trackback.asp给删掉,谁都不能引用了,包括那些 “动物们”,顿时就清净多了,可是,心里总觉得不是滋味,都Web2.0时代了,博客没了引用不就变成Web1.5了吗?采取极端手段就是不太舒服的说,于是昨天就恢复了Trackback.asp文件,真没想到。。




说到这里,很多人可能还不知道博客里的引用通告(Trackback)是用来干什么的呢,怎么就老是广告呢?呵呵。就来给大家说说引用通告(Trackback)吧。
Trackback Ping在blog系统中广泛使用,www.x-force.cn简单说来,Trackback是网站与网站之间互相通告的一种方法。例如,当你读了一篇日志,想对此写下自己的感想,您可以把新的日志内容写到自己的博客上。然后向原来的那篇日志发送一个引用通告。通过这种办法,在原始文章的下面就留下了你自己博客中的日志的链接,这样对于同一个话题的讨论,可以不局限在一个博客中了。

 www.x-force.cn举个例子来说明一下。比如你在异次元の世界中看了一篇感兴趣的文章,对这篇文章你自己有一些看法,但是如果你写的文字较多的话,通常会超过评论字数的限制,或者,你希望写的这篇有文采有价值的评论能留在自己的Blog而不是别人的评论里,这时候你可以使用引用通告了,这样带来的好处是字数不受限制,而且还利于以后维护,但是你怎么告诉我你写了这个评论呢?如果没有引用通告(Trackback)的话,你只能手动的把你的Blog链接地址回复在别人的评论上,但有了Trackback Ping,就不再需要这么麻烦了,你只要在自己Blog写文章时填上别人的文章的引用通告地址,别人的Blog系统会自动接收来自你的这个 Trackback Ping,并将显示在他的Blog的评论中,这就是Trackback的正确用法,可惜国内大多数Blogger还没有形成正确使用Trackback的习惯。www.x-force.cn

  Trackback在中国这个特殊环境也会产生一些问题,就是Trackback Spam(垃圾广告引用),实际上和垃圾广告留言一样的性质,但是由于Trackback的特点,又难以按照垃圾留言的方法进行处理。www.x-force.cn

  Trackback的协议本身很简单,没有验证的功能。只要你发送一个合法的Ping过来,程序是必须接收的。只要找到执行这个功能的程序文件并且找到每一篇文章引用地址的规律就可以大量发送Trackback Spam(垃圾广告引用)了。目前PJ-Blog和Z-Blog的Trackback非常有规律,很容易被Spam,我们PJBlog能做的就是添加屏蔽关键字,可是,这样始终无法根本地解决问题。www.x-force.cn

  当然解决问题也不难,就是我们在生成Trackback地址的时候,增加一个随机的校验码,将这个无规律的字符串放在Trackback地址中,这样如果别人发过来的Ping中该校验错误,就可以认为是Spam,否则则认为是正确的Ping。www.x-force.cn


今天参考了Alonefly的修改方法终于把引用地址加上随机的校验码了。那些“动物们”做的批量引用机没作用了吧~哈!这个是从 LBS 的垃圾引用屏蔽功能移植过来PJBlog的,要赞Alonefly一个才行www.x-force.cn

好,修改之前先看修改完成后的效果吧,首先,默认的引用地址是隐藏起来的


单击一下才出现真正的引用地址,并且地址最后是多了一串随机的校验码:www.x-force.cn

嘿嘿,这样就不再怕“动物们”的引用广告了~~www.x-force.cn

好!!看得手痒了吧?开始动手!www.x-force.cn



引用内容 引用内容

先强调一下,修改所有文件之前请先做好备份,有什么事我可负担不起哟!!!

首先在数据库的 blog_Info 表内增加一个字段,字段名称为 blog_tbKey ,数据类型为数字。并且填入任意数字为值。这一步千万别忘记哦~!www.x-force.cn




打开 trackback.asp 搜索:


程序代码 程序代码

If Conn.Execute("Select count(tb_ID) FROM blog_Trackback Where blog_ID="&tbID&" AND tb_URL='"&tbURL&"' AND tb_Title='"&tbTitle&"' AND tb_Intro='"&tbExcerpt&"' AND tb_Site='"&tbBlog&"'")(0)>0 Then
tbResponseXML 1,"此引用通告已发送!"
end if

if filterSpam(tbExcerpt & tbURL,"spam.xml") then
tbResponseXML 1,"此引用通告中包含被屏蔽的字符"
end if



修改为:


程序代码 程序代码

if StrComp(Request.QueryString("key"),blog_tbKey)=0 Then

if Conn.Execute("Select count(tb_ID) FROM blog_Trackback Where blog_ID="&tbID&" AND tb_URL='"&tbURL&"' AND tb_Title='"&tbTitle&"' AND tb_Intro='"&tbExcerpt&"' AND tb_Site='"&tbBlog&"'")(0)>0 Then
tbResponseXML 1,"此引用通告已发送!"
end if

if filterSpam(tbExcerpt & tbURL,"spam.xml") then
tbResponseXML 1,"此引用通告中包含被屏蔽的字符"
end if

else
tbResponseXML 1,"嘿!你小子搞错地址了吧!"
end if



搜索到


程序代码 程序代码

Conn.Execute("Insert INTO blog_TrackBack (blog_ID, tb_URL, tb_Title, tb_Intro, tb_Site, tb_PostTime) VALUES ("&tbID&",'"&tbURL&"','"&tbTitle&"','"&tbExcerpt&"','"&tbBlog&"',Now())")
Conn.Execute("Update blog_Content SET log_QuoteNums=log_QuoteNums+1 Where log_ID="&tbID)
Conn.Execute("Update blog_Info Set blog_tbNums=blog_tbNums+1")



替换成


程序代码 程序代码

dim tbKey
RANDOMIZE
tbKey=int(900000*rnd)+100000
Conn.Execute("Insert INTO blog_TrackBack (blog_ID, tb_URL, tb_Title, tb_Intro, tb_Site, tb_PostTime) VALUES ("&tbID&",'"&tbURL&"','"&tbTitle&"','"&tbExcerpt&"','"&tbBlog&"',Now())")
Conn.Execute("Update blog_Content SET log_QuoteNums=log_QuoteNums+1 Where log_ID="&tbID)
Conn.Execute("Update blog_Info Set blog_tbNums=blog_tbNums+1")
Conn.Execute("Update blog_Info Set blog_tbKey="&tbKey)




打开 class/cls_logAction.asp 搜索


程序代码 程序代码

SiteURL&"trackback.asp?tbID="&LogID



替换成


程序代码 程序代码

SiteURL&"trackback.asp?tbID="&LogID&"&key="&blog_tbKey




打开 Template/Article.asp 搜索到:


程序代码 程序代码

<a href="<$trackback$>" target="_blank"><$trackback$></a><br/>



替换成


程序代码 程序代码

<span id=tburl><a href="javascript:showTrackBack()">查看引用地址</a></span><br/>
<script type="text/javascript">
// 引用地址显示
function showTrackBack(){
var tb_url_text
tb_url_text = '<a href="<$trackback$>" target="_blank"><$trackback$></a>'
document.getElementById("tburl").innerHTML = tb_url_text
}
</script>




打开 class/cls_article.asp,搜索到


程序代码 程序代码

<a href="<%=(SiteURL&"trackback.asp?tbID="&id)%>" target="_blank"><%=(SiteURL&"trackback.asp?tbID="&id)%></a><br/>



替换成:


程序代码 程序代码

<span id=tburl><a href="javascript:showTrackBack()">查看引用地址</a></span><br/>
<script type="text/javascript">
// 引用地址显示
function showTrackBack(){
var tb_url_text
tb_url_text = '<a href="<%=(SiteURL&"trackback.asp?tbID="&id&"&key="&blog_tbKey)%>" target="_blank"><%=(SiteURL&"trackback.asp?tbID="&id&"&key="&blog_tbKey)%></a>'
document.getElementById("tburl").innerHTML = tb_url_text
}
</script>




最后打开 common/cache.asp,搜索到


程序代码 程序代码

Dim blog_wapNum,blog_wapImg,blog_wapHTML,blog_wapLogin,blog_wapComment,blog_wap,blog_wapURL



替换成


程序代码 程序代码

Dim blog_wapNum,blog_wapImg,blog_wapHTML,blog_wapLogin,blog_wapComment,blog_wap,blog_wapURL,blog_tbKey



搜索到


程序代码 程序代码

"blog_wapNum,blog_wapImg,blog_wapHTML,blog_wapLogin,blog_wapComment,blog_wap,blog_wapURL



替换成


程序代码 程序代码

"blog_wapNum,blog_wapImg,blog_wapHTML,blog_wapLogin,blog_wapComment,blog_wap,blog_wapURL,blog_tbKey



搜索到


程序代码 程序代码

blog_wapURL=CBool(blog_Infos(44,0))'使用 wap 转换文章超链接



在其下面插入一行


程序代码 程序代码

blog_tbKey=int(blog_Infos(45,0))'引用验证Key




好了,整个修改过程结束了~~

如果是使用静态日志模式的朋友请到后台重新生成所有日志文件。通过以上修改已经可以很有效的防范垃圾引用
效果已经在本站<异次元の世界>体现出来了~~

没有垃圾引用的日子过得真舒服……

再次感谢AloneFly给我们带来的修改方法,点击这里查看AloneFly的原文


2006.10.15 更新自动安装程序


引用内容 引用内容

对于很多朋友来说,上面的秃长的代码足以让大家心烦的了~

幸好,还有 AloneFly 这位高手给我们编写了PJBlog垃圾引用防治以及发送引用修正补丁的自动安装程序,大家不用再繁琐的去改代码了。。
这个补丁的自动安装程序对代码进行替换、数据库升级都是一步到位的,大大的简化了升级步骤,减少升级造成错误。

不过在大家升级前记得要备份啊!!!尤其是数据库一定要备份一次。

虽然本程序在本地环境里的全新 PJBlog 上测试成功,但不能排除装过其他插件的博客不会出现问题。如果您升级出现了差错可以到AloneFly那里说明一下。主要是说下安装程序是否有提示安装出错,或者安装完后的出错情况。

安装说明:
1. 将下载回去的文件解压,得到一个 up.asp 文件
2. 将这个up.asp上传到您的空间
3. 备份好你现在的数据库和文件
4. 在浏览器访问这个文件,如 http://www.x-force.cn/up.asp (这里是你的up.asp文件的地址)
5. 单击页面的按钮开始更新

声明一下:这个升级程序版权归原作者 AloneFly 所有



对了,X-Force的文件是需要注册才能下载的,请先去注册吧。

标签:  PJBlog 垃圾 引用

Blog更新日记060905

更新内容:

修改了顶部的公告,用来强制大家看我的语录……

新公告的代码取自:http://ctc.linshow.net/article.asp?id=33


增加Ajax版文章評論 for PJblog2 2.5.0125 [自動修改]




增加一个左侧的标签精华:http://www.bigik.cn/blog/article.asp?id=97

自己汉了一下内部文件,如果用户自己动手,要注意以UTF8格式保存。
标签:  PJBlog 更新

Blog更新日记060707(屏蔽垃圾)

新版似乎仍没加入屏蔽功能,因此采用了ResTools自己修改的屏蔽模块,其作用是假设垃圾发布者都会填写超过三个以上的http://,以此作为特征码进行屏蔽。


评论垃圾屏蔽:修改根目录blogcomm.asp
if len(post_Message)>blog_commLength then
ReInfo(0)="评论发表错误信息"
ReInfo(1)="评论超过最大字数限制<br/><a href=""javascript:history.go(-1);"">单击返回</a>"
ReInfo(2)="ErrorIcon"
postcomm=ReInfo
exit function
end if








'====================== 屏蔽垃圾评论 ================================
Dim GGPos
GGPos=InStr(post_Message, "http://")
if GGPos>0 then
GGPos=InStr(GGPos+7, post_Message, "http://")
if GGPos>0 then
GGPos=InStr(GGPos+7, post_Message, "http://")
if GGPos>0 then
ReInfo(0)="评论发表错误信息"
ReInfo(1)="你涉嫌发布垃圾广告。<br/><a href=""javascript:history.go(-1);"">单击返回</a>"
ReInfo(2)="ErrorIcon"
postcomm=ReInfo
exit function
end if
end if
end if
'====================== 屏蔽垃圾评论 ===========================


留言垃圾屏蔽,修改/Plugins/GuestBook/bookaction.asp
if hiddenreply=1 then hiddenreply=true else hiddenreply=false
if memName=empty and hiddenreply then
showmsg "留言发表错误信息","必须登陆才可以发表隐藏留言<br/><a href=""javascript:history.go(-1);"">单击返回</a>","ErrorIcon","plugins"
exit function
end if







'====================== 屏蔽垃圾留言 ==================================
Dim GGPos
GGPos=InStr(post_Message, "http://")
if GGPos>0 then
GGPos=InStr(GGPos+7, post_Message, "http://")
if GGPos>0 then
GGPos=InStr(GGPos+7, post_Message, "http://")
if GGPos>0 then
showmsg "留言发表错误信息","你涉嫌发布垃圾广告。<br/><a href=""javascript:history.go(-1);"">单击返回</a>","ErrorIcon","plugins"
exit function
end if
end if
end if
'====================== 屏蔽垃圾留言 ===============================


添加方法:分别找到上述两个asp文件,各自搜索蓝色代码所在,然后在对应位置下添加红色代码内容。

标签:  PJBlog 更新 垃圾

Blog更新日记060707

跟随官方更新到PJBlog2 v2.6 Build 02,新版本最让人开心的是对留言、评论、引用的批量删除,实在方便,总算一次性将很多垃圾,尤其是引用垃圾清除干净了,值得去升级。希望新的3.0版本会有更多吸引人的地方。


新版更新说明:



  1. 整合何昕和番茄修正的Bug

  2. 修正wap的对html过滤出错的问题

  3. wap 可以发表评论

  4. 增强评论以及留言本的管理

  5. 增加垃圾言论过滤功能

  6. 修正查询页面的Bug

  7. 改善后台的代码和部分操作

  8. 重构TrackBack

  9. 修正search.asp页面,减轻对数据库的查询. 过滤trackback

  10. 验证码不区分大小写

  11. 留言本插件升级到 1.5

  12. trackback 直接输出xml,并且以xsl进行样式过滤 (目前还不支持FF)

  13. 编辑日志同样允许发表trackback

  14. 后台允许编辑评论和留言,管理员也可以批量回复留言

  15. 修正XMLRPC部分返回值不规范的问题 (感谢confire提供的修改方法)

  16. 修正部分过滤不严格的漏洞(感谢Taihom的提醒)

  17. 修正文章第一个字符无法输入空格的问题

  18. 修正设置了用户编辑权限后,无法编辑的Bug

  19. UBB编辑器实现自动隐藏

  20. 修正所有"登陆"为"登录"

  21. 修正 sitemap.asp 错误的字段

  22. 修正 后台批量回复留言,没有update回复者姓名的Bug

标签:  PJBlog 更新

Blog更新日记060621

今天把黑名单和友情链接都改成上下滚动式了,这样一来,友情链接就不至于冗长了,而滚动式感觉能更吸引人注意,黑名单就是有这个目的。


修改的方式:依然是要到对应模块的“编辑HTML”中进行源代码编辑,使用如下代码--
<marquee onmouseover="this.stop()" onmouseout="this.start()" scrollamount="3" direction="up" height="200">
要滚动的代码或内容
</marquee>


以我的修改为例:
<marquee onmouseover="this.stop()" onmouseout="this.start()" scrollamount="3" direction="up" height="250">
<div class="LinkTable">$Link_Code$</div>
</marquee>
<div align="left"><a href="bloglink.asp">申请|查看全部链接</a></div>


我把高度改成250,</marquee>之前的就是可以修改的内容,黑名单也是用这种方式改的。稍微懂一点HTML的代码会好一点,比如<marquee XXX>肯定要对应</marquee>之类的……


顺便说一下横向滚动,也与此类似:


<marquee onmouseover="this.stop()" onmouseout="this.start()" scrollamount="2" scrolldelay="1" direction="left" height="15">
要滚动的代码或内容
</marquee>


老菜鸟就是像我这样有年资了,但是还是半懂不懂那种……


对了,原始的方法来自:http://bbs.pjhome.net/viewthread.php?tid=5296&extra=page%3D1


另,PJBlog已经升级了,观望一下稳定情况再决定是否升级。

标签:  PJBlog 更新

Blog更新日记

应该一早就建一个这样的日记,以前一些修改都遗忘了来龙去脉了。


2006-04-28:
根据http://wbc.bkkss.com/article.asp?id=102,添加tag相关功能,可以根据tag的相关性,在每篇文章底部增加相关文章列表。
修改内容:根目录的article.asp,/Template/article.asp。


2006-04-28:
使用WBC网站http://wbc.bkkss.com/article.asp?id=136制作的通讯录插件,并进行了简体化,同时在原作者网站做了说明,WBC表示认可,故将简体版放在这里:点击下载此文件


此前,本来取消了首页置顶文章的隐藏,后思考了一下,重新恢复了隐藏,因为感觉你隐藏起来,反而别人还愿意打开看了,这是一点虚荣心在作怪的原因。

标签:  PJBlog 更新

转贴-一段过滤垃圾信息的代码!

一早起来发现留言本里又多了好多条垃圾留言,忽然想起曾在浪人ㄨ黑白看到的一段代码,作用主要是过滤一些垃圾信息。PJBLOG在关键字过滤方面的功能确实还有点差强人意,将以下代码加到const.asp的最后面吧,可以检测提交的垃圾信息,例如垃圾评论、垃圾留言或者屏蔽某未注册用户的发言,都是可以的。

如果你需要功能增加,还可以把过滤字段写入数据库,使得可以动态的更新过滤字段。
程序代码 程序代码



Dim GetFlag,ErrorSql,RequestKey,ForI
ErrorSql = "***.com||彩 铃"
'此处写上你要过滤的关键字,记住,如果是英文请使用小写,大写的英文将无法被验证!
'其中***.com就是你要过滤的域名,用||隔开,彩 铃的垃圾最多了,也写上吧,其他的大家自己加
ErrorSql = split(ErrorSql,"||")
If Request.ServerVariables("REQUEST_METHOD")="GET" Then
GetFlag=True
Else
GetFlag=False
End If
If GetFlag Then
For Each RequestKey In Request.QueryString
For ForI=0 To Ubound(ErrorSql)
If Instr(LCase(Request.QueryString(RequestKey)),ErrorSql(ForI))<>0 Then
Response.Write ("对不起你提交的字段中有被管理员列入黑名单的关键字")
Response.End
End If
Next
Next
Else
For Each RequestKey In Request.Form
For ForI=0 To Ubound(ErrorSql)
If Instr(LCase(Request.Form(RequestKey)),ErrorSql(ForI))<>0 Then
Response.Write("对不起你提交的字段中有被管理员列入黑名单的关键字")
Response.End
End If
Next
Next
End If





注意,要填写在%>之前,否则会出错。
注,该段代码的原始出处应该是:http://day8.com.cn/web/ro/blogview.asp?logID=522
再注,上面“彩 铃”中间有空格是因为我已经把这个过滤加进去了,如果没有空格,我这个帖子也将被阻止发布了

标签:  PJBlog 垃圾 过滤

博客升级为PJBlog2 v2.5.0125

升级地址:http://www.pjhome.net/article.asp?id=420


PJBlog2 v2.5.0125 更新记录




  1. 增加wap功能

  2. 增加XMLPRC功能 MoveType API

  3. 增加访客记录最大记录值

  4. 增加日志发表以及修改class

  5. 后台增加输出静态索引功能

  6. 后台增加防止外部连接措施

  7. 附件管理无法获取附件文件夹以外的文件

  8. 后台对基本设置页面重新布局

  9. 修正referer过滤问题

  10. 修正数据库防下载代码

  11. 修正UBB代码日文过滤出错问题

  12. 用户检测页面增加返回一个布尔值

  13. 留言本插件用户名过滤

  14. 修正member.asp过滤不严问题

  15. 修正隐藏分类后分页出错的Bug

  16. 重写静态缓存类,增加日志列表静态页面输出

  17. 修正 feed/atom 输出标题没有还原字符的bug

  18. 修正 发送trackback 地址转义的Bug

  19. 修正 插件保存设置信息删除后再安装会insert更多设置的Bug

  20. xml.asp 增加分析XML变量的方法

  21. 合并 common/cacheMod.asp 的代码到 class/cls_logAction.asp

  22. 修正blog重新统计没有统计会员的Bug

标签:  PJBlog 升级
  • 1 
本站内容,除转载或版权特别申明的内容外,皆遵守《创造共用协议中文版》之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款。
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.