JTBC(CMS)

开源与免费的跨平台网站内容管理系统解决方案

腾讯交流群: 2254994
技术支持群: 27032719
首页 » 在线论坛 » ASP版本 
帖子内容
1 楼
darkcom
注册会员
积分 126
注册 2009-03-17
     
[已解决]留言簿被灌水了……大家是怎么来限制的(修改了验证码)
http://www.ntcits.com/support/gbook/?type=list

详见链接,这么模糊的字,难道是阿三们识别的?

建议老大改成简单的计算题或自定义问答。
本帖由 darkcom 于 2010-08-29 17:55:41 编辑过
2010-08-17 23:25:29
2 楼
jetiben
管理员
积分 7082
注册 2006-06-28
     
回复: 留言簿被灌水了……大家是怎么来限制的
还好嘛,都是 8月16日 的垃圾留言,现在的防垃圾留言机制是每天提交留言的地址都不一样,因此机器人即使抓到提交留言的地址,他也最多胡搞1天而已,看见直接手动删除即可。当然你说其他的验证方式,当然也可以直接自己修改修改看看效果。
2010-08-18 22:17:35
3 楼
darkcom
注册会员
积分 126
注册 2009-03-17
     
回复: 留言簿被灌水了……大家是怎么来限制的(修改了验证码)
1、验证码下载:http://www.tipstricks.org/

2、验证码调用更改
common/template/tpl_common.jtbc  79行
[p] <item>
      <name><![CDATA[valcode]]></name>
      <tpl_default><![CDATA[<script language="javascript">
function RefreshImage(valImageId) {
var objImage = document.images[valImageId];
if (objImage == undefined) {
  return;
}
var now = new Date();
objImage.src = objImage.src.split('?')[0] + '?x=' + now.toUTCString();
}
</script><img src="/support/captcha_numchar/captcha.asp" align="absmiddle" id="imgCaptcha" style="CURSOR:hand; CURSOR:pointer" onclick="RefreshImage('imgCaptcha')" />]]></tpl_default>
    </item>[/p]
3、验证码session名称更改
captcha.asp    83行
const SessionName = "rndcodes" 'Where store your secure code

4、演示
http://www.ntcits.com/support/gbook/

结果:认了三次才说对了
2010-08-21 17:42:16
4 楼
darkcom
注册会员
积分 126
注册 2009-03-17
     
回复: 留言簿被灌水了……大家是怎么来限制的(修改了验证码)
方法二求解:
1、简单的随机问题验证码

Function getcode()
Dim QuesionNum
QuesionNum=10  '问题的总数,如要添加问题,请先修改这个数值
Dim CodeIndex
CodeIndex=0
Dim QuesionArray(100)
Dim AnswerArray(100)
QuesionArray(0)="请输入fa<font color=red>t</font>mouse中的第三个字母:t"                '问题列表及答案,可自行修改
AnswerArray(0)="t"
QuesionArray(1)="请输入<font color=red>b</font>lurxx中的第一个字母:b"
AnswerArray(1)="b"
QuesionArray(2)="请输入b<font color=red>l</font>urxx中的第二个字母:l"
AnswerArray(2)="l"
QuesionArray(3)="请输入bl<font color=red>u</font>rxx中的第三个字母:u"
AnswerArray(3)="u"
QuesionArray(4)="请输入blu<font color=red>r</font>xx中的第四个字母:r"
AnswerArray(4)="r"
QuesionArray(5)="请输入blur<font color=red>x</font>x中的第五个字母:x"
AnswerArray(5)="x"
QuesionArray(6)="请输入blurx<font color=red></font>x中的第六个字母:x"
AnswerArray(6)="x"
QuesionArray(7)="21世纪最缺少的是什么?"
AnswerArray(7)="天才"
QuesionArray(8)="请输入我国国歌名,提示:<font color=red>义勇军进行曲</font>"
AnswerArray(8)="义勇军进行曲"
QuesionArray(9)="中国有多少个民族,输入<font color=red>数字</font>即可"
AnswerArray(9)="56"
Randomize
CodeIndex =  Int((QuesionNum * Rnd) + 0)
Session("GetCode") = AnswerArray(CodeIndex)
getcode = "<span style=""margin-right:40px;"">" & QuesionArray(CodeIndex) & "</span>"
End Function

2、点击文本框出现验弹出的验证码层
a、利用jquery弹出层,这段代码是在静态的模板里面的,然后如何将getcode的动态内容输出?
b、是否可在gbook的module_config.asp直接将getcode输出出去?
2010-08-21 18:25:02
5 楼
ehom
注册会员
积分 190
注册 2007-04-14
     
回复: 留言簿被灌水了……大家是怎么来限制的(修改了验证码)
好帖啊!支持。。。。
2010-08-22 18:45:20
6 楼
darkcom
注册会员
积分 126
注册 2009-03-17
     
回复: 留言簿被灌水了……大家是怎么来限制的(修改了验证码)
后来经测试,方法1,验证码不知道为什么竟然区分大小写(官方的测试文件是可以的),所以只有三个灌水,估计,验证码再复杂,不如自定义问题来的实在。
方法2,最简单的方法是采用iframe调用 验证码。
本帖由 darkcom 于 2010-08-22 22:36:30 编辑过
2010-08-22 22:31:26
7 楼
darkcom
注册会员
积分 126
注册 2009-03-17
     
回复: 留言簿被灌水了……大家是怎么来限制的(修改了验证码,请老大帮忙看看)
方法2,采用iframe调用,与原有验证码共存:
1、common/incfile/common.asp
445行增加
Function valcodea()
  Dim tmpstr
  tmpstr = ireplace("global.tpl_common.valcodea", "tpl")
  valcodea = tmpstr
End Function

2、gbook 的incfiles module_config。asp  53行
    tmpstr = cvalhtml(tmpstr, nvalidate, "{$recurrence_valcodea}")
3、通方法1的 tpl_common.jtbc
增加
[p] <item>
      <name><![CDATA[valcodea]]></name>
      <tpl_default><![CDATA[<IFRAME frameBorder=0 height=30 marginHeight=1 marginWidth=1 scrolling=no src="/support/captcha_numchar/1.asp" width=370></IFRAME>
]]></tpl_default>
    </item>[/p]
4、gbook的module.jtbc

相应改成valcode

急着回去,所以含糊。

请问老大,为什么我在ck_valcode修改了
    If UCase(request.Form("valcode")) = UCase(session("rndcodes")) Then tbool = true
    If UCase(request.QueryString("valcode")) = UCase(session("rndcodes")) Then tbool = true
为什么还必须输入大写的验证码才行。

附验证码提供的测试文件function:

<%
function TestCaptcha(byval valSession, byval valCaptcha)
dim tmpSession
valSession = Trim(valSession)
valCaptcha = Trim(valCaptcha)
if (valSession = vbNullString) or (valCaptcha = vbNullString) then
  TestCaptcha = false
else
  tmpSession = valSession
  valSession = Trim(Session(valSession))
  Session(tmpSession) = vbNullString
  if valSession = vbNullString then
  TestCaptcha = false
  else
  valCaptcha = Replace(valCaptcha,"i","I")
  if StrComp(valSession,valCaptcha,1) = 0 then
    TestCaptcha = true
  else
    TestCaptcha = false
  end if
  end if 
end if
end function
%>
2010-08-23 17:02:44
8 楼
darkcom
注册会员
积分 126
注册 2009-03-17
     
回复: 留言簿被灌水了……大家是怎么来限制的(修改了验证码,请老大帮忙看看)
闲了又折腾了下,原来admin登陆界面的验证码验证不同于其他地方,在 admin\common\incfiles\main.asp  134行

我修改为

Sub jtbc_cms_ckulogin()
  Dim valSession,valCaptcha
  valSession = Trim(session("rndcodes"))
valCaptcha = Trim(request.Form("validate"))
valCaptcha = Replace(valCaptcha,"i","I")
If Not StrComp(valSession,valCaptcha,1) = 0 Then
2010-08-28 16:03:07