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 回答