Email address obfuscator for Sitefinity
I was looking for a simple yet thorough solution to automatically obfuscate email addresses for Sitefinity. Since there is no Sitefinity solution for this out of the box, I would like to share what I have found to work for me.
I am now using a HttmModule called nJupiter.Web.UI.EmailObfuscator. Implementation was very simple:
command in the VisualStudio package manager:
Install-Package nJupiter.Web.UI.EmailObfuscator
Besides the installation of the HttpModule itself, the HttpModule must be bypassed for all requests of pages in edit mode. The module checks for the presence of a HttpContext item with the key "NJUPITER_EMAIL_OBFUSCATION_DISABLED". If this item's value is not null, the email address obfuscation will be bypassed for the request.
I found the easiest way to do this is in global.asax using the Application_PreRequestHandlerExecute event. Here is my code global.asax code:
// This key is used in the nJupiter.Web.UI.EmailObfuscator HttpModule to check for onfuscation bypass of the requestconst string ObfuscationDisabledKey = "NJUPITER_EMAIL_OBFUSCATION_DISABLED";protected void Application_PreRequestHandlerExecute(object sender, EventArgs e) //Disable email obfuscation if... if(!CheckEmailObfuscationConditions()) HttpContext.Current.Items.Add(ObfuscationDisabledKey, true);protected bool CheckEmailObfuscationConditions() // by default, return false which causes email obfucation to be bypassed by default var result = false; // have webservices obfuscate email addresses: if (HttpContext.Current.Handler is WebService) result = true; if (HttpContext.Current.Handler is Page) var page = (Page)HttpContext.Current.Handler; if (page != null) if (!page.IsBackend() && !page.IsIndexingMode() && !page.IsDesignMode() && !page.IsInlineEditingMode() && !ClaimsManager.GetCurrentIdentity().IsAuthenticated) result = true; // pages for unauthenticated frontend visitors have obfuscated email addresses return result;
I hope this helps.
Best regards, Mikael