问题:,我有一个内置管理界面的jQuery页面。管理函数只在设置管理变量时触发。这些函数需要第二个库才能正常工作,只有在第一次创建页面时用户是管理员时才会包含第二个文件。函数永远不会为普通用户触发,而普通用户不会获得第二个库的包含。
引用当前包含的文件中不存在的函数是否不好,即使该函数永远不会被调用?(这有道理吗?)
伪码:
标题:(注意不包括admin.js )
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="user.js"></script>script.js:(引用了管理函数,但无法执行)
admin = false; // Assume this
$(".something").dblclick(function(){
if(admin)
adminstuff(); // Implemented in admin.js (not included)
else
userstuff();
});Ideas:我认为可以为用户和管理员使用两个单独的文件,但我觉得这是一个过于复杂的解决方案(不想维护两个只有几行差异的大文件)。我在这个文件中包含一个对admin函数的引用的唯一原因是,我需要将它附加到作为脚本一部分被刷新的页面元素。当jQuery刷新页面时,我需要将函数重新附加到交互式元素。
的问题是:如果用户不使用,我希望保持非常简单,而不必包含文件。这是一个很好的方法,还是我应该走另一条路?
发布于 2009-06-01 20:31:00
代码的操作应该没有错误,因为没有实现的管理函数将不会被调用。唯一真正浪费的是传输未使用的管理代码的带宽。
然而,请允许我以默默无闻的方式告诫安全。如果用户要查看这段代码,并看到有他们无法访问的管理函数,他们可能会感到好奇,并尝试下载"admin.js“文件并查看这些函数的功能。如果您唯一的阻止管理功能被执行的块是停止包含文件,那么一些狡猾的用户可能会很快找到一种方法来调用管理函数,而他们不应该能够这样做。
如果您已经为管理函数进行了服务器端身份验证/权限检查,只需忽略我的上一段:-)
发布于 2009-06-01 20:35:12
就我个人而言,我会在admin.js中绑定(或重新绑定)事件:
$(function() {
$(".something").dblclick(function(){
adminstuff();
});
});
function adminstuff()
{
// ...
}通过这种方式,adminstuff()调用和函数对“普通”用户是不可见的。
发布于 2009-06-01 20:29:56
问得好。它不应该引起任何JavaScript问题。
其他需要考虑的事情:当你这样做的时候,你可能会把你的管理能力暴露给世界,这对黑客来说可能是有用的。这可能不是什么大问题,但这是值得注意的。
另请参阅:
https://stackoverflow.com/questions/936580
复制相似问题