【发布时间】:2012-12-20 19:02:01
【问题描述】:
我正在尝试调用给定哈希字符串中的函数名称的函数。我有以下代码:
$(window).on('hashchange', function() {
//alert(location.hash.substring(1, location.hash.length));
window[location.hash.substring(1, location.hash.length)];
});
function test() {
alert('123!');
}
有趣的是,当我取消注释 alert 调用时,一切正常。但是,当 alert 被评论时,它不起作用。
有什么想法吗?
【问题讨论】:
-
你在哪里调用函数?
-
听起来你正在尝试做的事情会打开一个major XSS hole
-
@Bergi:我仅将其用于移动 Web 应用程序中的页面导航。被调用的函数用于通过 API 调用呈现页面,这需要身份验证,所以我不认为它真的会带来安全风险(但如果我错了,请纠正我)。谢谢!
-
这些 API 调用是否改变了某些东西,或者它们只是 GET 请求?身份验证可能以前发生过,因此用户不会注意到发生了什么。此外,此代码允许执行任意(并且可能不需要)功能,请尝试打开
www.yourpage.com/#alert。所以把这些函数放在它们自己的对象上,而不是全局窗口对象上,你可以控制它有哪些(可调用的)属性。
标签: javascript jquery hashchange