DIY防SPAN方法

| | Comments (0) | TrackBacks (0)


Blog 使用圖形驗證,雖然常見,但文轉圖耗系統資源,參照我的好朋友(http://fun.idv.tw/fun) 的作法了,也弄了一個我自己的 span diy。

  

首先寫下一段簡單的Javascript code,name、value的值可隨意改,不過因Server side 要接值判斷,所以要記得您給的值。

     document.write("<input type=hidden name='CaptchaDIY' value='right'>");

 

將上述的源碼片段拿到 http://javascriptcompressor.com/ 網站,貼到 paste you code 的輸入框裡,中間位置,選最複雜的演算法(目前這版為Base62 ?)。按「Compress」的button。將得到下面的程序代碼: 

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0.1("<2 3=4 5=\'6\' 7=\'8\'>");',9,9,'document|write|input|type|hidden|name|CaptchaDIY|value|right'.split('|'),0,{}))

 

我用的mt 版本為 4.x ,將上述產生的代碼貼到下列位置Comment Form的Template裡。

( Design=>Template=>Template Modules=>Comment Form )

打開 Comment Fomr後,找到表單(form)的位置,如下程序碼:

 <form method="post"....

將上述編碼的 code 貼到 form 的下一行,如下 sample (上述的編碼程式為javascript code ,所以要用<script></script>的 code 給包住)

<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
<script language="javascript">
eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0.1("<2 3=4 5=\'6\' 7=\'8\'>");',9,9,'document|write|input|type|hidden|name|CaptchaDIY|value|right'.split('|'),0,{}))
</script>

 

接下來的工作,修改server side 的程式碼:

打開Comments.pm,位置在mt 安裝的資料下。如 \cgi-bin\mt\lib\MT\App\Comments.pm,打開後找到下面程式碼:

sub post {
    my $app = shift;
    my $q   = $app->param;

將判斷式加入在上面的程式碼之後,如下 sample:
sub post {
    my $app = shift;
    my $q   = $app->param;
    my $CaptchaDIY = $q->param('CaptchaDIY') or return $app->error($app->translate("You are not allowed to post comments."));
    return $app->error($app->translate("You are not allowed to post comments.")) if $CaptchaDIY != "right";

存檔後,就可以避開大部份的span資料。

 

這種方法無法擋住刻意的span留言,因為如果真的有心,任何的方法都是可被破解的,如我的朋友說的,這種方法跟圖形驗證一樣可以擋下大部份的垃圾資料。

0 TrackBacks

Listed below are links to blogs that reference this entry: DIY防SPAN方法.

TrackBack URL for this entry: http://blog.db.idv.tw/cgi-bin/mt/mt-tb.cgi/7

Leave a comment