使用razor asp.net在浏览器中显示电子邮件地址

时间:2012-10-02 05:40:11

标签: asp.net razor

我想在浏览器中显示"me@mymail.com"。我知道显示这样的电子邮件地址是不安全的。因此,当我们查看源代码时,它看起来像是一个javascript。这可能是剃须刀。在浏览器中显示电子邮件地址时,我习惯使用codeigniter php framework safe_email()

1 个答案:

答案 0 :(得分: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>

转义文本可以将它们从收割机中屏蔽掉,但脚本会自动在任何有能力的浏览器中显示它。没有脚本的用户将看到一个人类可读的混淆地址,他们可以轻易地纠正自己。