【问题标题】:displaying email address in browser with razor asp.net使用razor asp.net在浏览器中显示电子邮件地址
【发布时间】:2012-10-02 15:04:18
【问题描述】:

我想在浏览器中显示"me@mymail.com"。我知道这样显示电子邮件地址是不安全的。因此,当我们查看源代码时,它会显示为 javascript。剃刀是否可能。在浏览器中显示电子邮件地址时,我曾经使用 codeigniter php 框架 safe_email() 那样工作。

【问题讨论】:

  • 不确定这是否是您要求的,但请尝试将其表示为:me%40mymail.com

标签: asp.net razor


【解决方案1】:

您使用 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>

转义文本可以保护它们免受收割者的攻击,但脚本会在任何合适的浏览器中自动显示它。没有脚本的用户将看到一个人类可读的模糊地址,他们可以轻松纠正自己。

【讨论】:

  • 这可以用来在网页中制作助手吗?
  • 是的,您可以将 Escape 函数设为 HtmlHelper,但您需要为转义客户端脚本考虑更智能的方法。
猜你喜欢
  • 1970-01-01
  • 2014-12-11
  • 2011-07-24
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多