0

"me@mymail.com"ブラウザで表示したい。メールアドレスをそのように表示するのは安全ではないことはわかっています。したがって、ソースを表示すると、javascript として表示されます。これはかみそりで可能ですか。safe_email()私は、ブラウザに電子メールアドレスを表示するときに、codeigniter php フレームワークでそのように動作していました。

4

1 に答える 1

0

Razor を使用しているという事実は関係ありません。アドレス ハーベスターから電子メール アドレスを安全に保つ唯一の方法は、ページ内で難読化し、クライアント スクリプトを使用して適切なクライアントに対して難読化を解除することです。スクリプトが無効になっているユーザーをロックアウトしないように、人間が判読できる難読化を使用するのが好きです。これは私が行うことです(MVC WebForms構文を使用):

String emailAddress = "name@example.com";

public static String Escape(String s) {
    StringBuilder sb = new StringBuilder();
    foreach(Char c in s) {
        sb.Append('%');
        Int32 ic = (Int32)c;
        String hex = ic.ToString("X2"); // convert to hexadecimal
        sb.Append( hex );
    }
    return sb.ToString();
}

<span id="email"><%= Html.Encode( emailAddress.Replace("@", "REMOVE@CAPITALIZED") ) %></span>

<script type="text/ecmascript">
    document.getElementById("email").innerText = unescape("<%= Escape( emailAddress ) %>" );
</script>

テキストをエスケープするとハーベスターから保護されますが、スクリプトは適切なブラウザーで自動的に表示します。スクリプトを使用しないユーザーには、人間が判読できる難読化されたアドレスが表示され、簡単に自分で修正できます。

于 2012-10-02T07:04:18.033 に答える