diff --git a/.hgtags b/.hgtags index fc91973645..6857859e61 100644 --- a/.hgtags +++ b/.hgtags @@ -26,5 +26,6 @@ ff3bb24ea0c915878396a6ae27f1ff164e8ac150 Release-6.0.0-beta 56015ac26f5ab60e3c61b1d09075297b660afa07 Release-6.0.0-RC 1719fbd857f28b376639ac2aa0abada0ef2e7560 Release-6.0.0 e02f5aebb87e3f07d27376647756caa9762931d8 Release-4.11.4 +14338b0ab1738fbd8987677ecdb9a73d79fc229d release-4.11.6 b247b35d821144849f551e02da8ba719f91d5fb0 Release-6.0.2 aed55cba29009ad3db48880a7cfb66407ce9805f release-6.0.3 diff --git a/src/Umbraco.Web.UI/umbraco_client/Application/HistoryManager.js b/src/Umbraco.Web.UI/umbraco_client/Application/HistoryManager.js index b258c61e8e..b1f44a8f46 100644 --- a/src/Umbraco.Web.UI/umbraco_client/Application/HistoryManager.js +++ b/src/Umbraco.Web.UI/umbraco_client/Application/HistoryManager.js @@ -1,6 +1,6 @@ /// /// -/// +/// Umbraco.Sys.registerNamespace("Umbraco.Controls"); @@ -8,18 +8,28 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls"); Umbraco.Controls.HistoryManager = function() { /// This is a wrapper for the bbq plugin history manager, but we could do alot with history mgmt in the future! + + var hashFragmentRegex = new RegExp(/^\w+/); + function getHashFragment(frag) { + //tests for xss and ensures only the first alphanumeric chars are matched + var result = hashFragmentRegex.exec(frag); + if (result.length > 0) { + return result[0]; + } + return ""; + } var obj = { onNavigate: function(e) { - - var l = $.param.fragment(); - if (l != "") { - jQuery(window.top).trigger("navigating", [$.param.fragment()]); //raise event! + var fragment = getHashFragment($.param.fragment()); + if (fragment != "") { + jQuery(window.top).trigger("navigating", [fragment]); //raise event! } }, addHistory: function(name, forceRefresh) { - if ($.param.fragment() == name && forceRefresh) { + var fragment = getHashFragment($.param.fragment()); + if (fragment == name && forceRefresh) { this.onNavigate(); } else { @@ -27,8 +37,8 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls"); } }, - getCurrent: function() { - return ($.param.fragment().length > 0) ? $.param.fragment() : ""; + getCurrent: function () { + return getHashFragment($.param.fragment()); }, addEventHandler: function(fnName, fn) {