Railsライブラリ紹介: mail_to でメールアドレスをエスケープする「actionview-encoded_mail_to」

こんにちは、鈴木です。

 

actionview-encoded_mail_to (https://github.com/reed/actionview-encoded_mail_to) の紹介です。

 

メールリンクを作りたい

Rails4 でこんな感じのお問い合わせ用メールアドレスのリンクを作るときの話です。

Rails でメールリンクを作る方法はどうするのかといいますと、、、

「mail_to メソッドを使えば良いんでしょ?」

正解です!

「スパム業者にメールアドレスを収集されにくいようにエンコードするよね。」

親切です!

 

エンコードするとは?

スパム業者にメールアドレスを収集されにくくするためには、HTML 中にメールアドレスをそのまま書かないことが重要です。

つまりベタっと書かずに、

メールアドレス部分を数値参照に置き換える、

ということです。

こうすることで、「手当たり次第に Web ページにアクセス → 正規表現でメールアドレスを抽出 → スパムを送る」というスパムの対策になります。

この方法は完全というわけではなく、「手当たり次第に Web ページにアクセス → 数値参照をデコードする → 正規表現でメールアドレスを抽出 → スパムを送る」とされると防げないです。

それならこのように Javascript で書き出してみてはどうでしょう?

防御力は上がったと思います。

どちらの方法をとるべきかは要件(Javascript の使えないクライアントをサポートするかとか)によって変わりますが、とりあえずこれを手で書くのは面倒ですね。

 

mail_to でエンコードする

Rails では mail_to の encode オプションで上記のようなことが可能です。

この encode オプションですが、Rails3 ではコア機能でした。

Rails4 では actionview-encoded_mail_to という外部ライブラリに切り出されたので、Gemfile に追加する必要があります。

 

まとめ

伝えたかったことは、

  • メールアドレスはそのまま書かずにエンコードすると良い。
  • mail_to の encode オプションを使えばエンコードできる。
  • Rails4 では actionview-encoded_mail_to を Gemfile に追加する必要がある。

ということです。

 

Comments are closed, but you can leave a trackback: Trackback URL.