diff --git a/AssemblyVersion.cs b/AssemblyVersion.cs index 4e3654b..cdf8b87 100644 --- a/AssemblyVersion.cs +++ b/AssemblyVersion.cs @@ -16,5 +16,5 @@ using System.Reflection; // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("3.0.1.414")] -[assembly: AssemblyFileVersion("3.0.1.414")] +[assembly: AssemblyVersion("3.0.1.415")] +[assembly: AssemblyFileVersion("3.0.1.415")] diff --git a/Core/Formatter.cs b/Core/Formatter.cs index ec0abf6..e0fa366 100644 --- a/Core/Formatter.cs +++ b/Core/Formatter.cs @@ -1649,14 +1649,14 @@ namespace ScrewTurn.Wiki { if(!isImage) sb.Append(@" class=""emaillink"""); if(blank) sb.Append(@" target=""_blank"""); sb.Append(@" href=""mailto:"); - sb.Append(targetUrl.Replace("&", "%26")); // Trick to let ampersands work in email addresses + sb.Append(Tools.ObfuscateText(targetUrl.Replace("&", "%26"))); // Trick to let ampersands work in email addresses sb.Append(@""" title="""); if(!isImage && title.Length > 0) sb.Append(nstripped); else if(isImage && imageTitle.Length > 0) sb.Append(imageTitleStripped); - else sb.Append(targetUrl); + else sb.Append(Tools.ObfuscateText(targetUrl)); sb.Append(@""">"); if(title.Length > 0) sb.Append(title); - else sb.Append(targetUrl); + else sb.Append(Tools.ObfuscateText(targetUrl)); sb.Append(""); } else if(((targetUrl.IndexOf(".") != -1 && !targetUrl.ToLowerInvariant().EndsWith(".aspx")) || targetUrl.EndsWith("/")) && diff --git a/Core/Tools.cs b/Core/Tools.cs index 0e2ccfe..ea98c04 100644 --- a/Core/Tools.cs +++ b/Core/Tools.cs @@ -554,6 +554,21 @@ namespace ScrewTurn.Wiki { return hash; } + /// + /// Obfuscates text, replacing each character with its HTML escaped sequence, for example a becomes a. + /// + /// The input text. + /// The output obfuscated text. + public static string ObfuscateText(string input) { + StringBuilder buffer = new StringBuilder(input.Length * 4); + + foreach(char c in input) { + buffer.Append("&#" + ((int)c).ToString("D2") + ";"); + } + + return buffer.ToString(); + } + } ///