メールフォームでコピーペーストを禁止にしてみた

ホームページとセキュリティは今や併せて考えることが必要になってきました。
ホームページの技術向上とともに、悪用されることも増えたためです。

その一つがメールフォームです。
突き詰めるといろいろありますが、頻繁に起こることとして「迷惑メールの送信」です。

どういうことかというと、セールス等のメールがお問い合わせフォームから送信されてくることがあります。定型文面をフォームに張り付けて送信ボタンを押されているだけのことですが、送られてくるほうは、あまりいい感じはしません。

お問い合わせフォームなので、自社への相談等は受付たいですが迷惑メールは排除したいものです。

そこで役に立つのが「コピーペースト禁止」です。

フォームのコピーペーストを禁止することである程度迷惑メールの抑止ができます

コピペを禁止しても、フォームに文面を入力できる以上迷惑メールは止まらないのでは?
と思われるかと思います。

実際コピペを禁止しても、迷惑メールはゼロにはならないでしょう。
しかし、迷惑メールを減らすことはできます。

なぜならば迷惑メールを送る側からすれば、多くのメールフォームに同じ文面をコピーペーストしているためです。

例えば、100件のメールフォームに同じ文章を送ろうと思ったら、一つ一つ手入力していられません。
コピーペーストできないフォームで、文章をいちいち入力しなければいけなかったとしたら、迷惑メールを送るほうも面倒になります。
だから、コピーペースト禁止が有効な手段になるのです。

フォームのコピーペーストを禁止するやり方

フォームのコピーペーストを禁止するやり方は、次の記述をフォームに付け足すだけです。

具体的には次の通りです。

通常のフォーム

以下のフォームはコピーペーストができてしまいます。

コピーペーストを禁止したフォーム

先ほどのコードをフォームに埋め込むと、コピーペーストができなくなります。
次のフォームはコピー、ペーストができません。

コードの解説

先のコード「oncopy=”return false” onpaste=”return false” oncontextmenu=”return false”」をタグに記述すればそれでコピーペストできなくなります。
ここからは、どういった理屈であるかを解説します。

oncopy=”return false”

oncopyは、コピーを実行したタイミング(CTL+Cまたはメニューのコピー)で発火します。
return falseを記述することで、ブラウザがコピー処理をキャンセルします。

onpaste=”return false”

onpasteは、ペーストを実行したタイミング(CTL+Vまたはメニューのキャンセル)で発火します。
return falseを記述することで、ブラウザがペースト処理をキャンセルします。

oncontextmenu=”return false”

oncontextmenuは、windowsであれば右クリックしたタイミングでメニューを表示しようとしたときに発火します。
return falseを記述することで、ブラウザがメニュー表示処理をキャンセルします。

要はブラウザにコピー、ペースト、右クリック禁止を指定しているのです

各発火イベントにreturn falseを記述するだけで、なぜコピー、ペーストができなくのだろうと思いました。調べてみると、ブラウザがreturn falseを「キャンセル」と認識するためコピー、ペースとができなくなるということでした。

なるほど、確かにコピー、ペーストするのはブラウザなので、ブラウザ側がコピペしないようにすればよいことです。

理屈が理解できたことで、しっくりきました。

フォームのはこれからのスタンダード

文章のコピー禁止は、ケースバイケースで設定する、設定しないを検討する必要があります。
ただメールフォームに関しては、ペースト禁止にしてもデメリットがありません。

なぜならば、お問い合わせ目的で、お問い合わせフォームに入力される方は、その場で手入力されるからです。

メールフォームがペースト禁止で困るのは、いろんなフォームに同じ文章をペーストする場合です。
これをされるケースは、ほぼセールスメールを流す場合になります。

不要なセールスメールを排除し、本当のお問い合わせはちゃんと受け取る。
メールフォームのコピペを禁止にするだけで、想像以上の効果が得られます。

頭の良い人がおられるものです。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております