◀一般トップへ
  • 4975 削除
    • 4977 Re:削除
      • 4986 Re2:削除
        • 4987 Re3:削除
      • 5162 Re2:削除
        • 5163 Re3:削除
          • 5164 Re4:削除
        • 5455 Re3:削除
          • 5470 Re4:削除
            • 5472 Re5:削除
              • 5473 Re6:削除
                • 5475 Re7:削除
                  • 5476 Re8:削除
      • 5168 Re2:削除
        • 5169 Re3:削除
    • 5522 Re: 削除
  • [4975] 削除 管理人 2006年01月15日 11:44

    近々URL変えますね
    もう
    • [4977] Re:削除 しみづ 2006年01月15日 14:47

      >近々URL変えますね

       変える前に、一度お試しを。

       最近cyclamen.cgiへのスパムが多いですけど、えぐぞせさんの提案 http://akebi.jp/support/cyclamen.cgi?tree=c2890 を元に'form'を'sform'に改造して様子を見てみたら、10日ほどで4回スパムを防御できました。(その何倍か、検索エンジンのロボットがひっかかりましたが、投稿フォームを取り込めなくても問題ないでしょう)
       これでしばらくは防げるかもしれません。

       修正箇所は2箇所。念のため、ログをファイルacclog.cgiに出力しています。


      【cyclamen.cgi】

      elsif ($CMD{'mode'} eq 'form') { &lbc; &submit_form; exit;}
      ---↓-------------
      elsif ($CMD{'mode'} eq 'form'){open(ACC,">> acclog.cgi");print ACC "\n$date_num $CMD{'log'} 【spam】\t$ENV{'REMOTE_ADDR'}\n\t$ENV{'HTTP_USE
      R_AGENT'}";close(ACC);chmod($f_pmt,"acclog.cgi");&error('禁止語句が含まれています.');}
      elsif ($CMD{'mode'} eq 'sform') { &lbc; &submit_form; exit;}

      if (!$CMD{'ol'} && (!$readonly || $admin)) { printf "[<a href=\"$script_name?%s\" target=\"_self\">%s</a>]\n",&opt("mode=form",$CMD{'log'}),$ls00;}
      ---↓-------------
      if (!$CMD{'ol'} && (!$readonly || $admin)) { printf "[<a href=\"$script_name?%s\" target=\"_self\">%s</a>]\n",&opt("mode=sform",$CMD{'log'}),$ls00;}
      • [4986] Re2:削除 管理人 2006年01月17日 01:49

        ▼ しみづさん
        > >近々URL変えますね
        >  変える前に、一度お試しを。
        >
        >  最近cyclamen.cgiへのスパムが多いですけど、えぐぞせさんの提案 http://akebi.jp/support/cyclamen.cgi?tree=c2890 を元に'form'を'sform'に改造して様子を見てみたら、10日ほどで4回スパムを防御できました。(その何倍か、検索エンジンのロボットがひっかかりましたが、投稿フォームを取り込めなくても問題ないでしょう)
        >  これでしばらくは防げるかもしれません。
        基本的には一般掲示板に投稿されるので,
        log=dataを省略不可にする予定ですが効果ないかな?
        省略されたらホームページにRedirectする感じで.
        • [4987] Re3:削除 しみづ 2006年01月17日 02:46

          >log=dataを省略不可にする予定ですが効果ないかな?

           なるほど。私の方ではlog=XXXXXの掲示板も一時期スパムを書かれていたので、無敵の方法ではないかもしれませんが、相手がアドレスを収集し直すまでは有効かもしれません。
      • [5162] Re2:削除 しみづ 2006年04月10日 17:40


         前回のは、mode=formで直接書いてくる場合の対策ですが、ちなみに別のタイプ、mode=writeで直接書いてくる場合の対策は、以下のようなものになります。

        【cyclamen.cgi】

        317c317,320
        < elsif ($FORM{'mode'} eq 'write') { &lbc; &regist;}
        ---
        > elsif ($FORM{'mode'} eq 'write'){if ( $ENV{'HTTP_USER_AGENT'} =~ /INCM/i ) { &lbc; &regist;}
        > else {open(ACC,">> acclog.cgi");print ACC "\n$date_num $CMD{'log'} 【write】\t$ENV{'REMOTE_ADDR'}\n\t$ENV{'HTTP_USE
        R_AGENT'}\n\t$FORM{'value'}";close(ACC);
        chmod($f_pmt,"acclog.cgi");&error('禁止語句が含まれています.');
        > }}
        > elsif ($FORM{'mode'} eq 'twrite') { &lbc; &regist;}

        【cylib.cgi】

        237c237
        < print "<input type=hidden name=\"mode\" value=\"write\">\n";
        ---
        > print "<input type=hidden name=\"mode\" value=\"twrite\">\n";
        2585c2585
        < print "<input type=hidden name=\"mode\" value=\"write\">";
        ---
        > print "<input type=hidden name=\"mode\" value=\"twrite\">";
        3018c3018
        < print "<input type=hidden name=\"mode\" value=\"write\">\n";
        ---
        > print "<input type=hidden name=\"mode\" value=\"twrite\">\n";
        • [5163] Re3:削除 maru 2006年04月11日 00:39

          思いつきですが・・・。
          'form'をランダムな文字列にしておいて
          crondで定期的(深夜?)に書き換えるとか。

          何らかのプレフィックス+ランダム文字列という風に
          ルール化しておけば一括置換できそう。
          運悪く切り替えのタイミングに書き込んだ人は
          ごめんなさいということで。
          • [5164] Re4:削除 しみづ 2006年04月11日 02:57

            >'form'をランダムな文字列にしておいて
            >crondで定期的(深夜?)に書き換えるとか。

             そうですね。でもあれから数ヶ月経ちますが、相手は全然気づいてないようで、全部ブロックできてます。結果も確認していないようですね。
        • [5455] Re3:削除 しみづ 2006年09月27日 06:26


           この対策を試していただけるのはうれしいのですが、INCMもwriteを使っているので、このとおりの修正でないとINCMからの送信ができなくなります。
           ちなみに最近私のところでは、このタイプのスパムがほとんどです。
          • [5470] Re4:削除 げんた 2006年09月29日 00:12

            ▼ しみづさん
            >INCMからの送信ができなくなります。
            あー,やはり自分で変えたせいでしたか.

            INCMで送信できないのでおかしいなぁと思っていました.

            近々直そうと思います.
            • [5472] Re5:削除 maru 2006年09月29日 02:26

              ▼ げんたさん
              > ▼ しみづさん
              > >INCMからの送信ができなくなります。
              > INCMで送信できないのでおかしいなぁと思っていました.
              う!もしかしてまずいことしちゃいましたか?
              INCM使ってないので気が付きませんでした。
              twriteなら大丈夫ということですか?
              • [5473] Re6:削除 しみづ 2006年09月29日 02:30


                > twriteなら大丈夫ということですか?

                 その部分ではないです。そこは自由です。
                • [5475] Re7:削除 maru 2006年09月30日 14:08

                  INCMのwriteの処理を追加しました。
                  勝手に変更してすいませんでした。
                  • [5476] Re8:削除 しみづ 2006年09月30日 14:37


                     これが書き込めればOKということです。
                     うん、OKですね。
      • [5168] Re2:削除 管理人 2006年04月15日 11:47

        ▼ しみづさん
        のform変更対策してみました.
        • [5169] Re3:削除 しみづ 2006年04月15日 12:00


          >form変更対策してみました.

           しばらくはMSNやGoogleやYahooが盛んにひっかかりますが、だんだん学習するのか、今もひっかかっているのはYahooくらいです。
    • [5522] Re: 削除 しみづ 2006年10月26日 09:16


       もう一つのタイプがあると思っています。上のような、レスにつくタイプです。
       これは「返信」をクリックするのと同じことをプログラミングしていると思われ、私のところには数回しかきていないので十分検証はしていないのですが。

       修正は以下の掲示板に書きましたが、多いので、ここではその元として組んだPerlによる修正スクリプトを書いておきます。
      http://www.dtmtown.com/cyclamen/cyclamen.cgi?tree=s529#535

       使い方は、実行するフォルダの親フォルダに元となるcgi(cyclamen.cgi,cylib.cgi)を置いておき、スクリプトを実行すると修正されたcgiがそこにできます。


      open (OUT,">cyclamen.cgi");
      open (IN,"../cyclamen.cgi");
      binmode (IN);
      $/ = '\n';

      while (<IN>) {

      # スパム
      s/\$CMD\{'res'\}/\$CMD{'tes'}/g;
      s/"res=/"tes=/g;
      s/elsif \(\(\$CMD\{'tes'\}/elsif (\$CMD{'res'}){open(ACC,">> acclog.cgi");print ACC "\\n\$date_num \$CMD{'log'} 【res\$CMD{'res'}】\\t\$ENV{'REMOTE_ADDR'}\\n\\t\$ENV{'HTT
      P_USER_AGENT'}";close(ACC);chmod(\$f_pmt,"acclog.cgi");&error('禁止語句が含まれています.');\n}\nelsif ((\$CMD{'tes'}/;


      s/\x0d//g;

      printf OUT "%s", $_;
      }
      close(IN);
      close(OUT);


      open (OUT,">cylib.cgi");
      open (IN,"../cylib.cgi");
      binmode (IN);
      $/ = '\n';

      while (<IN>) {

      # スパム
      s/\$CMD\{'res'\}/\$CMD{'tes'}/g;


      s/\x0d//g;

      printf OUT "%s", $_;
      }
      close(IN);
      close(OUT);