web-dev-qa-db-ja.com

連絡先フォームを大量メール送信に悪用されないように保護するにはどうすればよいですか?

連絡先フォームの一般的な機能は、連絡先メッセージをサイト所有者だけでなく、連絡先要求を送信した人にも送信することです。フォームをさまざまな電子メールアドレスで何百万回も送信する自動化されたスクリプトによってスパムツールとして使用されるのを防ぐための適切な手段は何ですか?

私はいくつかのアプローチを考えることができますが、それぞれに欠点があり、あまり効果的ではありません。

  • CAPTCHAは、今日、簡単に壊れてしまう可能性があり、人間の提出者にとって面倒です。
  • レート制限(1日あたりIPあたりの送信数はnのみ)は、分散スクリプトに対しては効果がなく、プロキシされたユーザーを妨げる可能性があります。
  • スパム検出は誤検知を生成する可能性があり、それがリソースを大量に消費する場合、サイトはDDOS攻撃の影響を受けやすくなります。

ただし、攻撃者にとっては、それぞれの対策によってリソースの消費量が増加します。コメント形式のスパムはどの程度蔓延していますか?心配する必要はありますか?

9
chiborg

認証されていない任意のインターネットユーザーが、ウェブサービス(つまり、ウェブサイトの「お問い合わせ」フォーム)から送信される電子メールメッセージのコンテンツと受信者の両方を制御できるようにすることは悪い考えであり、スパマーにとって魅力的なターゲットになる可能性があります。

あなたにとって重要な場合:

  • ユーザーがメッセージの受信者を指定できるようにします。そして
  • フォームの送信時にその受信者にメッセージを送信し、

次に、少なくともユーザーがメッセージの内容を制御できないようにすることをお勧めします。

GNU Mailman がサブスクリプション要求を受け取ったときに取るようなアプローチを取りませんか?つまり、最初に確認メールを次の行に沿って送信します。

あなたまたはあなたになりすました誰かが、当社のWebサイトのお問い合わせフォームを使用して使用するメッセージを送信しました。これは[IP ADDRESS]から送信されたもので、送信者のメールアドレスとしてあなたのメールを提供しました。この送信を行った場合は、[こちら]をクリックするか、件名を変更せずにこのメールに返信して、お問い合わせフォームの送信を確認してください。送信された内容を読んで返信します。お問い合わせフォームからメッセージを送信していない場合は、このメッセージを無視してください。

これをレート制限して、(週|月|年|何でも)所定の電子メールアドレスへの匿名送信を1つだけ許可し、ユーザーが上記の指示に従って確認するとタイマーがリセットされます。これは、トロールにフォームを使用して無実の人々に偽の確認メッセージを送信させることで迷惑をかけることを阻止します。

いずれの場合も、お問い合わせフォームの送信者が送信されたメールアカウントにアクセスできることが確認された場合にのみ、送信されたメッセージの内容がそのメールアカウントのユーザーに表示されます。

8
sampablokuper

以前のシステム管理の経験に基づく部分的な回答をさせてください:はい、それはかなり一般的であり、心配する必要があります。

政治的に正しくない可能性があります。ユーザーベース(ビジネスを行う相手はどこですか?).

2
rackandboneman

AKISMETは興味深い代替手段です。スパムフィルターのようなものですが、アウトソーシングされており、多くのサイトから蓄積された知識を組み合わせて、スパムからあなたをよりよく保護します。

これは主にwordpressコメントを保護するために使用されます(私はこれを使用しましたが、単一の誤検出またはスパムがフィルターを通過したことを覚えていません)、そのAPIは他の目的に使用できます:- https://akismet.com/development/

連絡先データの詳細をAPIに送信すると、APIについて肯定的または否定的な答えが得られます。誤検知と誤検知を報告するためのAPIがあります。

もちろん、プライバシーコンサーはいくつかあります。連絡先データを受け取るためです。ただし、考慮できるオプションです。

もう1つの提案は、すでに述べたものと組み合わせて使用​​することです。同じIPからの連絡先が多すぎる場合は、akismetの連絡先を送信して確認します。

1
CristianTM