実用的な非画像ベースのCAPTCHAアプローチ?


318

Stack OverflowにCAPTCHAのサポートを追加する予定です。これは、ボット、スパマー、およびその他の悪意のあるスクリプト化されたアクティビティを防ぐために必要です。ここでは人間に物事を投稿または編集してもらいたいだけです!

最初の防衛線として、JavaScript(jQuery)CAPTCHAを使用します。

http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs

このアプローチの利点は、ほとんどの人にとって、CAPTCHAが表示されないことです。

ただし、JavaScriptが無効になっている場合でも、フォールバックが必要であり、ここで注意が必要です。

ASP.NET用の従来のCAPTCHAコントロールを作成しましたが、これを再利用できます。

CaptchaImage

ただし、リクエストごとにサーバー上でこれらのすべての画像を作成するオーバーヘッドを回避するために、テキストを使用することをおすすめします。

のようなものを見てきました。

  • ASCIIテキストキャプチャ: \/\/(_)\/\/
  • 数学パズル:7マイナス3の2倍とは何ですか?
  • トリビアの質問:ヒキガエルとアイスキャンディーのどちらが良い味ですか?

たぶん私はここで風車を傾けているだけかもしれませんが<noscript>、可能であれば、リソースをあまり消費しない、画像ベースでない互換性のあるCAPTCHA を使用したいと思います。

アイデア?


16
実際にサーバー上にイメージを作成する必要はありません。リクエストを処理するだけです。例:<img src = "generateImage.aspx?guid = blah">
ブライアンR.ボンディ

58
雑学クイズは文化的な偏りがちです(あなたの質問に答えるフランス人を想像してください...)。さらに、英語が母国語ではないユーザーにも対応できます。また、ブルートフォースを使用して簡単に破ることができます(〜2 ^#_ OfQuestionsオプションしかない)。
アダムMatan

72
また、アイスキャンディーとは一体何ですか?
フレーザー

57
Wolfram Alphaによれば、「7マイナス3倍2は1」は1です。私は8だと思いました。あなたは反キャプチャを発明したと思います。
Mike Robinson、

50
@Mike Robinson:プログラマーは、通常の日常使用における演算子の優先順位について知っておくべきだと思います=)
Gnark

回答:


205

私が開発し、完全に機能しているように見える方法(おそらく私はあなたほど多くのコメントスパムを受け取らないでしょう)は、隠しフィールドを持ち、それを偽の値で埋めることです:例:

<input type="hidden" name="antispam" value="lalalala" />

次に、ページが読み込まれた秒数で値を毎秒更新するJavaScriptを使用します。

var antiSpam = function() {
        if (document.getElementById("antiSpam")) {
                a = document.getElementById("antiSpam");
                if (isNaN(a.value) == true) {
                        a.value = 0;
                } else {
                        a.value = parseInt(a.value) + 1;
                }
        }
        setTimeout("antiSpam()", 1000);
}

antiSpam();

次に、フォームが送信されたときに、アンチスパム値が「lalalala」のままの場合は、スパムとしてマークします。アンチスパム値が整数の場合は、10(秒)などの値を超えているかどうかを確認します。10未満の場合はスパムとしてマークし、10以上の場合は通過させます。

If AntiSpam = A Integer
    If AntiSpam >= 10
        Comment = Approved
    Else
        Comment = Spam
Else
    Comment = Spam

理論は次のとおりです。

  • スパムボットはJavaScriptをサポートせず、見たものを送信します
  • ボットがJavaScriptをサポートしている場合、フォームは即座に送信されます
  • コメント投稿者は投稿する前に少なくともページの一部を読んでいる

この方法の欠点は、JavaScriptが必要であり、JavaScriptを有効にしていない場合、コメントはスパムとしてマークされますが、スパムとしてマークされたコメントを確認するので、これは問題ではありません。

コメントへの対応

@MrAnalogy:サーバー側のアプローチは非常に良い考えに聞こえ、JavaScriptで行うのとまったく同じです。グッドコール。

@AviD:私のブログで述べたようにこの方法は直接攻撃になりやすいことを知っています。ただし、見つけた任意のフォームに盲目的にゴミを送信する平均的なスパムボットに対しては防御します。


45
JAVASCRIPTなしで機能するバージョンASPなどでこれを行い、フォームページが読み込まれたときのタイムスタンプがあり、それがフォームが送信されたときと比較した場合はどうでしょうか。ElapsedTime <10秒の場合、スパムである可能性があります。
クレイニコルズ

28
悪意のあるユーザーがそれを見て迷惑をかける場合、非常に明らかにバイパス可能です。私はあなたがこれを知っていると確信していますが、彼らが気にならないと思っていると思います...まあ、それが価値のあるサイトでないなら、あなたは正しいですし、彼らは気にしないでしょう-しかしそれはそうです、彼らはそうし、それを十分に簡単に回避します...
AviD

48
これが私が使用するこれへのひねりです。非表示の値を、現在に設定されている暗号化された時間にします。ポストバック時に、10秒から10分が経過したことを確認します。これは、常に有効な値をプラグインしようとするトリックスターを失敗させます。
Tim Scott、

7
ボットが通り過ぎる可能性があると指摘したすべての人に...これは答えで指摘したように私は知っています。それはあなたの平均的なボットと退屈なユーザーを止める非常に簡単な方法です。私は現在ブログで使用していますが、これまでのところ100%成功しています。
GateKiller 2009年

8
バイパスが簡単なテストから始めて、適切かどうかを確認することをお勧めします。
pbreitenbach 2009

211

13
それは素晴らしいです。サイトへのリンクはrandom.irb.hr/signup.phpです。時にはそれははるかに簡単です
Marcio Aguiar

22
唯一の問題は、ほとんどの人間にとって本当に難しいことですが、コンピュータは通常これで問題ありません。
Tim Matthews

7
その問題の答えは-3だと思いますか?
dancavallaro 2008

2
@エリック、そうじゃない。また、コンピュータサイエンスで博士号を取得しているが、気になりたくない人も対象にしています。
BobbyShaftoe 2008

28
-3は正しいようです。しばらく前にこのウェブサイトをリサーチに使用したことを覚えています。キャプチャにたどり着いたとき、楽しくて違っていたのでとても幸せでした。実際の放射性崩壊源を使って量子乱数発生器にアクセスするためのものです。
Alex

57

何か不足している場合を除いて、すべての作業が外部で行われるため、reCAPTCHAを使用する際の問題は何ですか。

ちょっとした考え。


17
再キャプチャはユーザーに敵対的です。Captchsは十分悪いです。しかし、ユーザーがOCRの小さなメリットを得るために困難にすることは、積極的に敵対的です。
pbreitenbach 2009

19
なぜユーザーに敵対的なのですか?スパムはユーザーフレンドリーですか?
Elzo Valugi、2010年

14
人間にとっても画像をデコードすることが困難な場合があり、これが発生すると正当なユーザーに不満をもたらす可能性があるため、ユーザーに敵対的です。画像のデコードが非常に難しい例については、Joshの最悪のキャプチャとのリンクを参照してください。
Andrei Fierbinteanu 2010

4
@Andreiは、reCAPTCHAが難しい場合は、いつでも別のイメージをロードすることができます。
mhitza

23
reCAPTCHAは問題なく、自家製ソリューションの95%が考慮さえしていないアクセシビリティオプションを実装しています。
alxp

42

このアプローチの利点は、ほとんどの人にとって、CAPTCHAが表示されないことです。

私はこのアイデアが好きです。担当者システムに接続する方法はありませんか?つまり、+ 100の担当者がいる人は誰でも人間である可能性が高いです。したがって、担当者がいる場合は、CAPTCHAに関して何もする必要はありません。

そうでない場合は、送信してください。100に到達するのにそれほど多くの投稿が必要になることはないと確信しています。コミュニティは、攻撃的なタグでスパム行為をしていると思われる人をすぐに飛び込みます。「スパム報告」リンクを追加してください。それは200ダウンモッド?それらのうち3つを入手して、スパムボットの成果をアンロックして、さようなら;)

編集:私はまた追加する必要があります、私は非画像CAPTCHAの数学のアイデアが好きです。または、おそらく単純ななぞなぞタイプのものです。投稿をさらに面白くするかもしれません^ _ ^


13
カルマの高い​​メンバーアカウントの認証情報が盗まれた場合はどうなりますか?
ジェームズマクマホン

20
@nemoその後、あなたはそれに対処します。しかし、この理由だけで解決策を回避する理由はほとんどありません。
pbreitenbach 2009

誰もがスパムと高いカルマを見て、アカウントが盗まれたことを知っていました。
hamstar 2011年

37

ハニーポットのキャプチャについてはどうですか?


4
Honeypot Captchaの説明(これは非常によく見えます):ボットはフォームが大好きです。彼らはすべてのフィールドに記入します。ハニーポットCaptchaには、CSSによって非表示になっているフィールドが含まれているため、ボット(およびIE 3.0を使用するボット)だけがそれを見ることができます。それが満たされた場合、それはボットです。実装は非常に簡単です。
クレイニコルズ

5
繰り返しますが、最小限の時間投資で簡単にバイパスできます。確かに、なんらかのスクリプトキディをブロックすることができますが、サイトに価値がある場合、それは主要な脅威ではありません。
AviD 2008

ハニーポットのキャプチャは使いやすさに悪影響を及ぼします。スクリーンリーダーは非表示のフォームフィールドを無視しません。
ベヤードランデル

はい、これは展開が簡単で、非常にうまく機能します。アクセシビリティだけが本当の問題です。
ミーム

6
アクセシビリティのは簡単なことでいくつかのテキストを追加するにバイパスすることができますHey, if youre a human, keep this field blank!
Strae

30

史上最悪のCAPTCHAは避けてください。

雑学は大丈夫ですが、それぞれを書く必要があります:-(

誰かがそれらを書かなければならないでしょう。

ReCaptchaが印刷された単語を書くのと同じ方法で雑学クイズを行うことができます。それは2つの単語を提供し、そのうちの1つは答えを知っています、もう1つはそうではありません-2番目の十分な答えの後、それは今もその答えを知っています。2つの雑学クイズに質問します。

魚が必要とするように女性は男性が必要ですか?

オレンジオレンジオレンジ。緑と入力します。

もちろん、これはタイマーや計算された秘密など、他の手法と組み合わせる必要があるかもしれません。質問はローテーション/リタイアする必要があるため、質問の供給を維持するために、随時追加できます。

明白な質問を入力してください:

答えさえ必要ありません。他の人間はあなたのためにそれを理解します。「asdf ejflf asl; jf ei; fil; asfas」のように、質問に「難しい」フラグを付けることを許可する必要がある場合があります。

StackOverflowゲームボットを実行している人を遅くするには、質問をIPアドレスでローテーションします。つまり、すべての質問が終了するまで、同じIPアドレスが同じ質問を取得しません。これにより、既知の質問の辞書の作成が遅くなり、ボットの人間の所有者があなたの雑学の質問すべてに答えるようになります。


14
トリビアの質問は、あなたにとって簡単で、英語を習得していないさまざまな国の人々や異なる文化の出身の人々にとって非常に難しい場合があるので、注意してください。ログインだけに辞書を使用するように強制すると、彼らは動揺するかもしれません!さらに悪いことに、彼らはサイトの使用をやめるだけです。
ya23

14
「女性には魚が必要なように男性が必要ですか?」それで、この質問に対する答えは何ですか?
Lotus Notes

2
自転車。イリーナ・ダンによる引用(グロリア・シュタイネムによって人気がある)。
webbiedave

9
...魚のようにテントウムシが必要です。
matt lohkamp

28

友人のサイトで見たことがあります。彼はそれを20ドルで売っています。アスキーアートです!

http://thephppro.com/products/captcha/

  .oooooo.         oooooooo 
 d8P'  `Y8b       dP""""""" 
888      888     d88888b.   
888      888 V       `Y88b '
888      888           ]88  
`88b    d88'     o.   .88P  
 `Y8bood8P'      `8bd88P'   

2
+1、あなたはこのようなものにお金を払うべきではないと思いますが。私はむしろそれをゼロから構築してもらいたいです。
Dalin Seivewright 2008

5
いいですが、視覚障害者のための音声版も必要です
プロ

29
この問題は、画像よりもクラックが発生しやすいことです。あなたがしなければならないのはそれを写真に読み込むだけであり、あなたはOCRを実行するための完璧な白黒画像を持っています。
Andrei Krotkov、2009年

@Andrei、これに代わるバージョンがあり、「figlet」を使用して生成されます。これにより、captchaの文字がASCII文字を共有するように文字を「マッシュ」できます。これらはOCRに少し難しいです。
Pasi Savolainen、

58
広告である可能性がありますが、a)質問に対する有効な回答であり、b)これは友人によるものであることを著者が明確に示している(つまり、偏見があると明確に述べている)ため、回答に問題はありません。
Michael Stum

28

CAPTCHAは、現在の概念化では壊れており、簡単にバイパスされることがよくあります。既存のソリューションのどれも効果的に機能しません。GMailが成功するのは、せいぜい20%の時間だけです。

この統計はOCRのみを使用しており、CAPTCHAプロキシやCAPTCHAファームなどの他の方法があるため、実際にはそれよりもはるかに悪いです。最近、OWASPでこの件について講演しましたが、pptはまだオンラインではありません...

CAPTCHAはどのような形でも実際の保護を提供することはできませんが、カジュアルなドライブバイゴミをブロックしたい場合は、それで十分かもしれません。しかし、それはセミプロのスパマーでさえ止めません。

通常、保護する価値のあるリソースのあるサイトでは、3方向からのアプローチが必要です。

  • 認証されたユーザーからの応答のみを抑制し、匿名の投稿を禁止します。
  • 認証されたユーザーからの少数のゴミ投稿を最小限に抑えます(防止しないでください)。人間のモデレーターもここで役立ちますが、モデレーターの洪水(または溺死)といった他の問題が発生し、一部のサイトでは開放性を好みます...
  • サーバー側のヒューリスティックロジックを使用して、スパムのような動作、またはより人間に似ていない動作を識別します。

CAPTCHAは、経済性を変えるだけで、2番目の突起でTINYビットを助けることができます。他の突起が配置されている場合、CAPTCHA(最小のコストですが、まだコスト)を突破することで成功することはもはや価値がありません。少量のスパム。

繰り返しになりますが、スパム(および他のゴミ)のすべてがコンピュータで生成されるわけではありません。CAPTCHAプロキシまたはファームを使用すると、悪意のあるユーザーがスパムを送信する可能性があります。


CAPTCHAプロキシは、ポルノやゲームなど、他のサイトのユーザーに画像を提供する場合に使用します。

CAPTCHAファームには、多くの安価な労働者(インド、極東など)がそれらを解決しています...通常、1000キャプチャあたり2〜4ドルが解決されます。最近Ebayでこれについての投稿を見ました...


プロキシとファームは、人間によって解決されているため、それを壊したり「CAPTCHA」を回避したりしません。実際、それらの存在そのものが、現在のメソッドが機能するという事実を証明しています!CAPTCHAは「それが人間サブミットしている」「私が欲しい提出のタイプ」...というわけではありません
フレーザー

10
丁度!しかし、CAPTCHAは「ボット」を防止するために最も頻繁に使用されます。これらのボットが人間であるかどうかは関係ありません。意図は、大量の非個人的な使用を防止することです。これは、私がいつも言っていることを証明しているだけです
。CAPTCHA

キャプチャが問題ない状況はたくさんあります。ポイントは、Webサイトの所有者は、ユーザーエクスペリエンスと制御のバランスをとるソリューションを選択する必要があるということです。一部の人には、キャプチャはありません。他の人のために、キャプチャ。さらに他の人のために、何か他のもの。しかし、キャプチャを完全に却下するだけでは賢くありません。
pbreitenbach 2009

1
問題は、CAPTCHAを入れることでその制御が可能になると考えることから生じます。ありません。実質的なビットではありません。それが何らかの価値を提供できるが、「制御」できないいくつかのまれな状況があります。(私はここでCAPTCHAについて頻繁に言及しましたが、他のメカニズムと共に、スパムを価値のないものにするのに役立つ追加のビットを提供します。)
AviD 2009

27

そのため、CAPTCHAはモデレーターを除くすべてのユーザーに必須です。[1]

それは信じられないほど愚かです。では、サイトの投稿編集できるが、CAPTCHAなしでは投稿できないユーザーはいるのでしょうか?投稿に反対票を投じるのに十分な担当者がいる場合、CAPTCHAなしで投稿するのに十分な担当者がいます。必要に応じて高くします。さらに、画像認識なしで使用できるスパム検出方法はたくさんあります。そのため、未登録のユーザーでも、神に見捨てられたキャプチャフォームに記入する必要はありません。



20

コミュニティ自体を使用して、ここにいる全員が人間であること、つまり信頼の輪のようなものであることを再確認するのはどうですか?Webを始めるのに本当に信頼できる人を見つけるには、このCAPTCHAを使用して、絶対に100%人間であることを確認することをお勧めします。

Rapidshare CAPTCHA-リーマン仮説http://codethief.eu/kram/_/rapidshare_captcha2.jpg

確かに、彼がフィールズメダルのスピーチを準備するのに忙しすぎて、私たちが信頼の網を築くのに役立つ小さなチャンスがあるかもしれませんが...


17

Asirraはこれまでで最も愛らしいcaptchaです。


最初は「アシラはこれまでで最も採用しやすいキャプチャです」と読みました。これは私をわずかに追いやった。私はそれがおそらく最も魅力的であることに同意しますが、サイトに記載されているように、ボットの作成者はすべての画像を保存して(しばらく時間がかかる場合があります)、分類してからボットが簡単に壊してしまう可能性があります。
Dalin Seivewright 2008

7
視覚障害者はどうすればそれらに答えることができますか?
BBetances 2009

reCAPTCHAとほぼ同じです。私たちは刺激の少ない、非画像ベースのアプローチを探しています。
AhmetB-Google 2010年

私は彼らがデモをチェックするために非常に多くの画像を使用していると言わなければなりません。
pimvdb '18 / 06/18

1
私が人間であることを認める前に、私はこれで3回行った-おそらくいくつかの画像は毛皮の大きなボールのように見えたからだろう。
Kramii

16

ユーザーに単純な算術式を解かせてください:

2 * 5 + 1
2 + 4 - 2
2 - 2 * 3

スパマーがひとたび捕まれば、それらを見つけるのはかなり簡単でしょう。検出されたスパマーが要求するたびに、次の2つのコマンドを切り替えます。

import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby

明らかに、これが機能する理由は、すべてのスパマーがeval1行のコードでキャプチャを解決するのに十分に利口なためです。


1
また、残酷さのために+1しましたが、これではうまくいかないことを追加したいと思います。VB.NETevalプロバイダーを使用して、フォーマットc:またはrm -rf、改行、コロン、セミコロンなどを確認します。それよりも少し独創的です。さらに、Linuxスクリプトをrootとして実行することは決してできません。そのため、これも機能しません。
Stefan Steiger、

@Longpokeそれは単に機能しません。最近のほとんどのUnixでは、rmでの実行に対する保護が組み込まれてい-rf /ます。
hamstergene、2011年

笑って言ったらただおもしろいです。おそらくrm -rf / *が代わりに機能します。とにかく、あなたができる他の悪いことはたくさんあります。
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

これはまた、人々がPython literal_eval(または他の言語の同等のもの)を知らないことを前提としています。これはかなり悲しい事実です。
Petr Viktorin

rm -rf ~スクリプトが誰かの個人用マシンで実行されている場合、破壊的です
Kirb

16

私は次の簡単なテクニックを使ってきました、それは絶対確実ではありません。誰かが本当にこれをバイパスしたい場合、ソースを見るのは簡単です(つまり、Google CAPTCHAには適していません)が、ほとんどのボットをだますはずです。

次のように2つ以上のフォームフィールドを追加します。

<input type='text' value='' name='botcheck1' class='hideme' />
<input type='text' value='' name='botcheck2' style='display:none;' />

次に、CSSを使用してそれらを非表示にします。

.hideme {
    display: none;
}

送信時に、これらのフォームフィールドにデータが含まれているかどうかを確認し、フォームの投稿に失敗したかどうかを確認します。推論は、ボットがHTMLを読み取ってすべてのフォームフィールドに入力しようとするのに対し、人間は入力フィールドを表示せず、そのままにしているためです。

これを悪用しにくくするためにできることは他にもたくさんありますが、これは基本的な概念にすぎません。


7
「ハニーポット
キャプチャ

15

私たちは皆、基本的な数学知っているべきですが、数学のパズルは混乱を引き起こす可能性があります。あなたの例では、「1」ではなく「8」で答える人がいると思います。

ランダムな文字を太字または斜体で強調表示した単純なテキスト文字列が適していますか?ユーザーは、CAPTCHAとして太字/斜体の文字を入力するだけです。

たとえば、s sdfa t werwe a jh c sad k oghvefdhrffghlfgdhowfgh

この場合、「スタック」はCAPTCHAになります。このアイデアには明らかに多数のバリエーションがあります。

編集:このアイデアで特定された潜在的な問題のいくつかに対処するためのバリエーションの例:

  • 太字/斜体の代わりにランダムな色の文字を使用します。
  • CAPTCHAに2文字おきに赤い文字を使用する(ボットが異なる形式の文字を識別してCAPTCHAを推測する可能性を減らします)

1
私はこれが好きです-たとえば、「下線が引かれた3番目の赤い文字、4番目の太字の緑文字、5番目の太字でない青文字のスペルの単語を入力してください」。
An̲̳̳drew 2008

9
上記の「ssdfatwerweajhcsadkoghvefdhrffghlfgdhowfgh」の例は、単純な正規表現で解決できます
アレックス

これは、計算式を使用しているユーザーには適していません。この苦痛を持つ科学者がいるので、プログラマーがいる可能性があるのは不合理ではありません。
BobbyShaftoe 2008

素晴らしいアイデア!おそらく、フォアグラウンド/バックグラウンドの色を変えて遊んでも、人間には簡単に見えるがボットにはランダムすぎるテキストを表示するものを手に入れることができますか?もちろん、これは色覚障害者
にとって

2
さまざまな形の色覚異常をサポートする必要があるため、色を使用すると状況が複雑になる可能性があります。そうでなければ、これはかなりいいですね。
KarstenF

12

この同様の議論が始まったが:

私たちは頻繁にデータマイニングされたアプリケーションの1つでこのソリューションを試しています。

より良いCAPTCHAコントロール(ルックマ-画像なし!)

あなたは私たちのそれを実際に見ることができます 建物検査検索で

ソースを表示して、CAPTCHAが単なるHTMLであることを確認できます。


これは今でも機能しますが、十分なサイトがそのようなアプローチを使用するとすぐに、スパマーはHTMLを画像にレンダリングし、結果をOCRします。
ワープ

12

誰もこれを読まないことを知っていますが、犬や猫の CAPTCHAはどうですか?

どちらが猫または犬であるかを言う必要があります。マシンはこれを行うことができません 。http://research.microsoft.com/asirra/

かっこいいです


4
コンピュータはこれを行うことができません。人を盲目にすることもできません。
TRiG 2010年

1
私も、高解像度モニターで見たとき。それらの画像は非常に小さいです。また、そのうちの1人は、白いフェンスの後ろにある身元不明の生き物でした。
jsims281 2010

10

私は、誰でも答えられる簡単な質問を使用します。

空は何色?
オレンジは何色ですか?
草は何色ですか?

それは誰かがあなたのサイトにボットをカスタムプログラミングしなければならないようにするので、おそらく努力する価値はありません。もしそうなら、あなたは質問を変えるだけです。


Cycはこれを簡単に解決できます...そしてそれはオープンソースです。実装するには、最大で数時間のスクリプトが必要になります。
rmeador 2008

これは、ubuntuフォーラムでも使用されます。私はそれが好きで、「2 + 2 =?」のようなチェックの実装 または「アルファベットの最初の文字は何ですか」は非常に単純です。
ピスタッキオ2008

8
答え:1)今は、明るい青、後で赤、そして黒で、ダウンタウンの近くにオレンジがかっています。2)オレンジ、カビの生えない限り、緑または黒または白です。3)南カリフォルニアでは茶色、ビバリーヒルズにいるのでなければ緑色です。
mmr 2009年

52
@mmr参照、それは実際にはシステムの利点であり、smartassesがコメントを投稿しないようにします...
tghw

2
2番目と3番目の答えは、砂漠やボルチモアに住んでいる人に偏っています。
Mike Robinson

10

私は個人的にはCAPTCHAが好きではありません。これは使いやすさに悪影響を及ぼし、有効なユーザーを無効にするというセキュリティ問題を解決しません。

私は、サーバー側で実行できるボット検出方法を好みます。有効なユーザーがいるため(OpenIDのおかげ)、「振る舞い」をしないユーザーをブロックできます。ボットのパターンを特定し、それを一般的なユーザーのパターンと照合して、差を計算するだけです。

Davies、N.、Mehdi、Q.、Gough、N.:ゲームエンジンとAIツールを使用したインテリジェントNPCの作成と視覚化http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06 .pdf

Golle、P.、Ducheneaut、N.:ボットによるオンラインゲームの禁止<-ACMポータル

Ducheneaut、N.、Moore、R.:ゲームの社会的側面:大規模マルチプレイヤーオンラインゲームの相互作用パターンの研究

確かにこれらの参照のほとんどはビデオゲームボットの検出を指していますが、それは私たちのグループのペーパーRobot Robots:An In-Game Exploration of Robot Identificationのトピックだったからです。それは出版されたものではなく、学校のプロジェクトのための何かでした。興味があればメールでお知らせします。事実は、それがビデオゲームボットの検出に基づいている場合でも、使用パターンに愛着を持つユーザーがいるため、Webに一般化できるということです。

MusiGenesisのこのアプローチの方法には同意します。これは私が自分のウェブサイトで使用している方法であり、適切に機能するためです。非表示のCAPTCHAプロセスはほとんどのスクリプトをブロックする適切な方法ですが、それでもスクリプト作成者がメソッドをリバースエンジニアリングしてJavaScriptで探している値を "偽造"することを防ぐことはできません。

最善の方法は、1)ユーザーを確立して、悪いときにブロックできるようにすること、2)典型的なパターンと非典型的なWebサイトの使用パターンを検出するアルゴリズムを特定し、3)それに応じてそのユーザーをブロックすることです。


ボットがOpenIDを登録できないのはなぜですか?攻撃者は、独自のOpenIDパブリッシャーを作成するだけです。
rjmunro 2009

はい、@ rjmunro、それは良いことです。インターネットの難しさは匿名ユーザーの識別です。ボットがOpenIDを登録し、そのOpenIDユーザーをボットとして識別した場合、ボットをシャットダウンできます。もはや匿名ではありません。これは同じプロバイダーによる複数の登録を妨げませんが、そのプロバイダーをシャットダウンしてボットを許可することができます。目標は、インターネットの匿名性をできる限り取り除くことです。
jwendl

10

私はあなたと共有したいことについていくつかのアイデアを持っています...

OCRを回避する最初のアイデア

ユーザーから一部の非表示部分があるキャプチャですが、完全な画像は2つのコードを一緒にしたものなので、OCRプログラムとキャプチャファームは、表示部分と非表示部分を含む画像を読み取り、両方をデコードして送信に失敗します。 ..-私はそれをすべて修正する準備ができており、オンラインで作業しています。

http://www.planethost.gr/IdeaWithHiddenPart.gif

より簡単にするための2番目のアイデア

人間が正しいものを選択しなければならない多くの単語のあるページ。これも作成しましたが、簡単です。単語はクリック可能な画像であり、ユーザーは右の画像をクリックする必要があります。

http://www.planethost.gr/ManyWords.gif

画像なしの3番目のアイデア

以前と同じですが、divとテキスト、または小さなアイコンを使用します。ユーザーは、正しい1つのdiv / letter / imageだけをクリックする必要があります。

http://www.planethost.gr/ArrayFromDivs.gif

最終的なアイデア-私はそれをCicleCaptchaと呼びます

そして、もう1つ、私のCicleCaptchaを使用します。ユーザーは画像上の点を見つける必要があります。彼がそれを見つけてクリックした場合、それは人であるか、マシンが失敗するか、またはこのソフトウェアで方法を見つけるために新しいソフトウェアを作成する必要があります。

http://www.planethost.gr/CicleCaptcha.gif

批評家は大歓迎です。


re-captchaには、その言葉を読み上げるテキストがあります。クリックする場所を教えてくれるかもしれません。
Robert P

@RobertP視覚障害のあるときにクリックするのは、視覚障害のあるときに撮影するようなものです...「頭を狙うだけ」。

8
@pst「少し左側です。そうです、もう少しです。良いです。良いです。今すぐ元に戻します。上へ、いいえ、反対方向に上っています。はい、もう少しです。少しだけです。はい。少しだけです。詳細。ほとんどそこに。ほとんどそこに...ほとんど...ほとんど... CAPTCHA !!!」
Robert P


7

最近、名前とIDを「メッセージ」に設定したタグを追加し始めました。CSSで非表示に設定しました(display:none)。スパムボットはそれを見て、記入し、フォームを送信します。サーバー側、ID名のテキストエリアが入力されている場合、投稿をスパムとしてマークします。

名前とIDをランダムに生成するために私が取り組んでいるもう1つの手法は、一部はスパムチェックであり、その他は通常のフィールドです。

これは私にとって非常にうまく機能し、成功したスパムをまだ受け取っていません。しかし、私のサイトへの訪問者ははるかに少なくなります:)


cssを使用してフォームフィールドを非表示にし、空であることをアサートすることも私にとってはうまくいきました。簡単な証拠ではありませんが、良いオプションです。
Chris

テクニック1:ハニーポット
ケビンジ2011

6

非常に単純な計算が良いです。目の不自由な人は答えることができます。(しかし、Jarodが言ったように、演算子の優先順位に注意してください。)誰かがパーサーを書くことができると私は収集しますが、それはスパミングをより高価にします。

十分に単純で、その周りのコーディングは難しくありません。ここには2つの脅威があります。

  1. ランダムなスパムボットと、それらをバックアップする可能性のある人間のスパムボット。そして
  2. Stack Overflowのゲーム用に作成されたボット

単純な計算では、脅威#1を打ち負かす可能性がありますが、脅威#2は打ち切りません。


パーサーは、イメージキャプチャクラッカーを書くよりもはるかに簡単だと思います。ユーザーに提供する最も簡単なことは、スパムボットがおそらく使用するものであることを覚えておいてください。悲しいことに、非JSキャプチャーはもっと難しい必要があります。
stalepretzel 2008年

5

あなたが持っているキャプチャのアイデアの組み合わせを使用した場合はどうなりますか(それらのいずれかを選択するか、ランダムにそれらの1つを選択してください)。

  • ASCIIテキストキャプチャ://(_)//
  • 数学パズル:7マイナス3の2倍とは何ですか?
  • トリビアの質問:ヒキガエルとアイスキャンディーのどちらが良い味ですか?

ページのcssの非表示セクションにまったく同じcaptchaを配置することを追加して-ハニーポットのアイデア。そうすれば、正しい答えを期待できる場所と、答えが変わらないはずの場所ができます。


1
私の意見では、「より良い味」はかなり主観的です。味覚を巡って外出する人はボットと解釈されます。さらに、答えが2つしかない場合、ボットとして合格する可能性は50%です。
pimvdb '18 / 06/18

主観的には真実ですが、特定のものは元の質問からのものでした。私のポイントは、3つ(または複数)のタイプすべてをランダムに使用することでした。また、答えが多肢選択の場合、合格の可能性は50%にすぎません。考えられる答えをリストに示さずにユーザーに単語を入力させると、ボットが質問/答えの中から正しい単語を選ぶのがはるかに困難になります。
TheEmirOfGroofunkistan

5

単純な「このフィールドを空白のままにする:」フィールドで驚くほど良い結果が得られました。特にフィールドに「URL」のような名前を付けると、ボットはすべてを埋めるようです。厳密なリファラーチェックと組み合わせて、ボットがそれを通過することはまだありません。

ここでアクセシビリティについて忘れないでください。Captchaは、スクリーンリーダーを使用する多くの人々にとって悪名高いものです。単純な数学の問題、または非常に些細な雑学(「空の色は何ですか?」という質問が好きでした)は、視覚障害のあるユーザーにとってはるかに友好的です。


5

シンプルなテキストがいいですね。 コミュニティに賄賂を贈って仕事をさせましょう!私のように、SO担当者ポイントがサイトの成功を支援するためのユーザーのコミットメントを測定すると信じている場合、スパマーからサイトを保護するためにレピュテーションポイントを提供することは完全に合理的です。

簡単な質問と一連の正解の貢献ごとに+10の評判を提供します。質問は既存のすべての質問から適切に遠く(編集距離)である必要があり、評判(および質問)は、人々がそれに答えられない場合は徐々に消えます。正解の失敗率が20%を超える場合、送信者は不正解ごとに1つの評判ポイントを失います(最大15)。したがって、悪い質問を送信すると、今度は+10になりますが、最終的にはネット-5。あるいは、キャプチャの質問が良いものであるかどうかについて投票するようにユーザーのサンプルに依頼することは理にかなっています。

最後に、毎日の担当者キャップのように、キャプチャの質問を送信して100を超える評判を得ることができるユーザーはいないとします。これは、そのような貢献に与えられる重みに対する妥当な制限であり、スパマーがシステムに質問を送らないようにするのにも役立ちます。たとえば、同じ確率ではなく、提出者の評判に比例する確率で質問を選択できます。ジョンスキート、質問は投稿しないでください:-)


5

サーバーに暗号ナンスのAJAXクエリを作成します。サーバーは、ナンスを含むJSON応答を送り返し、ナンス値を含むCookieも設定します。JavaScriptでナンスのSHA1ハッシュを計算し、値を非表示フィールドにコピーします。ユーザーがフォームをPOSTすると、Cookieがnonce値とともに返されます。CookieからナンスのSHA1ハッシュを計算し、非表示フィールドの値と比較して、過去15分間にナンスが生成されたことを確認します(memcachedがこれに適しています)。これらすべてのチェックに合格した場合は、コメントを投稿してください。

この手法では、スパマーが座って何が起こっているのかを把握する必要があります。スパムが発生した後も、コメントを取得するには複数のリクエストを発行し、Cookieの状態を維持する必要があります。さらにSet-Cookie、最初にJavaScriptを解析して実行し、AJAXリクエストを行った場合にのみ、ヘッダーが表示されます。これは、特に作業が単一のサイトにのみ適用されるため、ほとんどのスパマーが進んで行うよりはるかに多くの作業です。最大の欠点は、JavaScriptをオフにしたり、Cookieを無効にしたりすると、スパムの可能性があるというマークが付けられることです。つまり、モデレートキューはまだ良いアイデアです。

理論的には、これはあいまいさによるセキュリティと見なすことができますが、実際には優れています。

スパマーがこの手法を破ろうとするのを見たことは一度もありませんが、おそらく数か月に1回、話題のスパムエントリが手作業で入力されてしまい、それは少し不気味です。


5

1)人間のソルバー

ここで言及したすべてのソリューションは、人間のソルバーアプローチによって回避されます。プロのスパムボットは何百もの接続を保持し、CAPTCHA自体を解決できない場合、スクリーンショットを人間のリモートソルバーに渡します。

CAPTCHAの人間の解法者が法律に違反していることをよく読みます。まあ、これは、この(スパミング)業界がどのように機能するかを知らない人たちによって書かれています。
人間のソルバーは、CAPTCHAが解決するサイトと直接対話しません。CAPTCHAがどのサイトから取得されて送信されたのかもわかりません。私は、ヒューマンソルバーサービスを提供する数十(数百ではないにしても)の企業やWebサイトについて知っていますが、ボードとの直接的なやり取りのための単一のサービスではありません。
後者は法律を侵害しないので、CAPTCHAの解決は完全に合法な(そして正式に登録された)事業会社です。それらは犯罪的意図を持たず、たとえば、リモートテスト、調査、概念の証明、プロトタイプ作成などに使用された可能性があります。

2)コンテキストベースのスパム

AI(Artificial Intelligent)ボットは、(異なる国の)異なるIPアドレスから異なるタイミングでコンテキストを決定し、コンテキスト依存ダイアログを維持します。ブログの作者でさえ、コメントがボットからのものであることを理解できないことがよくあります。詳細については説明しませんが、たとえば、ボットは人間の会話をウェブスクレイピングしてデータベースに保存し、単純に再利用することができるため(フレーズごとに)、ソフトウェアや人間によってスパムとして検出されません。

最も投票された回答は次のとおりです。

  • *「理論は次のとおりです。
    • スパムボットはJavaScriptをサポートせず、見たものを送信します
    • ボットがJavaScriptをサポートしている場合、フォームは即座に送信されます
    • コメント投稿者は投稿する前に少なくとも一部のページを読んでいる」*

同様にハニーポットの回答とこのスレッドのほとんどの回答は、明らかに間違っています。
私はあえて彼らが犠牲者の死を免れないアプローチであると言います

ほとんどのスパムボットは、さまざまなIP(さまざまな国の)からのローカルおよびリモートのJavaScript対応(パッチおよび管理)ブラウザーを介して動作し、ハニートラップやハニーポットを回避するのに非常に優れています。

異なる問題は、ブログの所有者でさえ、コメントがボットからのものであることを頻繁に検出できないことです。コメントは実際には人間のダイアログや他のWebボード(フォーラム、ブログのコメントなど)から収集されたものだからです。

3)概念的に新しいアプローチ

申し訳ありませんが、この部分を沈殿したものとして削除しました


1
このスレッドのほとんどすべての回答で問題の概要を説明しました。小さなウェブサイトだけに限定されていなければ、彼らはすぐに敗北するでしょう。それらのいずれかが大規模なWebサイトまたは多数の小さなWebサイト(たとえば、Wordpressプラグイン)で使用された場合、それらは1日で無効になります。それらは実際にはキャプチャではありませんが、あいまいさによるセキュリティの幸運なケースです。あなたも正しいです。現代のスパムは、私でもスパムとして認識できないコメントを付けています。CAPTCHAをあきらめ、代わりにMollomを使用しました。スパムのクラウドソーシングは、私にとってより良いアプローチです。
Dan

5

実際には、プログラミング関連のキャプチャセットを用意するのもいいかもしれません。例えば:

キャプチャ

誰かがこれをバイパスする構文チェッカーを構築する可能性がありますが、キャプチャをバイパスすることははるかに多くの作業です。あなたは、関連するキャプチャを持っているという考えを得ます。


5
例外:例の質問に対する回答(誰かが後でこれに遭遇し、画像が表示されない場合:「でのPHP構文エラーの数$var == array(1 = 'one');;」)はであり1、そうではないことを知ってい3ますか?(真剣に試してみてください。$var == array(1 => 'one');;)^ _〜
pinkgothic

ええと、そのイメージを作ったのを覚えていないのに十分長いです。もちろん、そうです。これはキャプチャとしてはあまり良いとは思いませんが、おそらくプログラミングフォーラムへの参加要件としてはそうでしょう。
ロス、

4

私はスパムボットとの戦いの経験がなく、スパムボットがどれほど洗練されているか本当に知りません。とは言っても、jQueryの記事には、サーバーだけで実現できなかったものはありません。

jQuery記事の要約を言い換えると、次のようになります。

  1. サーバー上でコンタクトフォームを生成すると......
  2. 現在の時刻を取得します。
  3. そのタイムスタンプと秘密の単語を組み合わせて、32文字の「ハッシュ」を生成し、訪問者のブラウザにCookieとして保存します。
  4. ハッシュまたは「トークン」タイムスタンプを非表示のフォームタグに保存します。
  5. フォームがポストバックされると、タイムスタンプの値が、Cookieに保存されている32文字の「トークン」と比較されます。
  6. 情報が一致しないか、欠落している場合、またはタイムスタンプが古すぎる場合は、リクエストの実行を停止します...

リクエストごとに生成するオーバーヘッドなしで従来のイメージCAPTCHAを使用したい場合の別のオプションは、オフラインで事前に生成することです。次に、フォームごとに表示するものをランダムに選択する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.