SalesforceでWeb-To-リードを導入していて、最近やたらとスパムが届くなあ、と気になっている方いませんか?
今日はそんな方のために、なぜスパムが届くようになったのか、そしてどうやったら防げるのかについて書きたいと思います。
なぜスパムが届くのか?
まずはWebサイトのソースコードをチェックしてみてください。
もし、name=oidとなっているタグの値が、下の図のように見え見えになっていたら要注意です。

このoidというのはSalesforceで各組織に割り当てられている組織IDなのですが、この値を取得されてしまうと、フォームに入力しなくても直接スパムを送ることができてしまいます。
つまり、フォームでいくら必須入力項目を設定しても、リファラで制限しても関係なくスパムが送られてしまうというわけです。(あえてやり方は内緒にしておきます…)
しかも、Salesforceからoidの再発行はしてもらえませんので、いったんoidが漏れてしまったら、直接スパムは永遠に避けられないということになります。
どうやって防ぐか?
では、どうやったらスパムを防ぐことができるのか?は、まずoidを知られてしまうとどうやったってスパムが送られるのを防ぐことはできませんので、とにかくoidを隠ぺいしましょう。
やり方は、主に次の2点が考えられます。
- JavaScriptで別のjsファイルにoidの値を保持させる
- フォームをphpで作る
JavaScriptで別のjsファイルに値を保持させる
この場合は簡単ですが、jsファイルの中身はWebページのソースコードから辿ることができる、つまり見えてしまいますので、完全ではありません。
ただ、普通にページに直書きで書かれていないので、スクレイピングによる読取りなどからは保護できるんじゃないでしょうか。
フォームをphpで作る
この場合は、Webページのソースコードのように中身が見られることはありませんので、確実です。
oidを知られてしまっている場合は何してもスパムは止められないので
ちなみに、既にoidを知られてしまっている場合は、phpを使ってoidを隠ぺいするようにフォームを作り直したとしても、直接送られてくるスパムに関してはまったく意味がありません。
そこで、できる対策としては、リードに入力規則を設定することです。
例えば、フォームから送られてくるデータに関して、隠し項目で必ずリファラ情報や固定の値を設定します。
すると、きちんとフォームから送信されてきたデータについてはその隠し項目の情報は入っていますが、直接送られてきたスパムには入っていませんので、リードにスパムデータは入らなくなります。
けれど、次の引用で説明している新規リードの生成件数にはカウントされてしまいますので、注意が必要になります。
Salesforceのヘルプページによると、
Salesforce は、24 時間以内に生成される新しいケース (5,000 件) とリード(500 件)の最大数を定めています (Salesforce の機能とエディションの制限) 。組織が Web-to-ケース、または、Web-to-リードの一日の制限を超えると、デフォルトのケース所有者またはデフォルトのリード作成者は、ケースまたはリードについての情報を含む通知メールを受信します。組織が 24 時間の制限に達した場合は、Salesforce では Web-to-ケース要求および Web-to-リード要求の両方を含む待機中の要求のキューに追加の要求を格納します。要求は制限が更新されると提出されます。待機中の要求のキューの制限は合計 50,000 件です。組織が待機中の要求の制限に達すると、制限を超える要求は却下され、キューに入れられません。システム管理者は、提出が却下された最初の 5 件のメールに関して通知を受け取ります。
スパムが24時間以内に500件を超えるとちょっとめんどくさいことになりそうです。500件のスパムなんてそうそう送られてくることはないことかもしれませんが、やろうと思えば簡単に送れる件数です。
ということなので、できる限り直接スパムを避けるために、oidが見え見えだと気付いた時点のできるだけ早い段階で、見えないように対処すべきだと思います。
みなさん、お気をつけください。