我为我的网站编写了很多
javascript函数,最近我发现只需编写javascript函数即可调用这些函数:FunctionName();在URL栏上.调用这样的函数可能对我的网站很脆弱,那么有什么方法可以防止这种情况发生吗?有什么办法可以在地址栏上停止使用
Javascript吗?
任何微妙的方法也可以像检测函数调用的任何方法一样有用,如果它不是来自地址栏那么函数应该运行,否则它不会运行?
我尝试在Facebook上的地址栏上使用Javascript,但它没有用.所以必须有办法阻止这个..
最佳答案 我同意其他评论者检测“函数调用的位置以及它是否来自地址栏然后函数应该运行”是一种不好的方法来处理客户端安全性,因为有这样的事情.
也就是说,函数范围,闭包以及它与URL栏的关系是一个有趣的话题. Here’s some more context on global variables and scope.简短版本是如果你有这样的功能:
function test (argument) {
alert('hey')
}
它可以通过URL栏执行,因为它位于窗口/全局范围内,这似乎就像javascript URI一样.如果你把相同的函数放在一个闭包中:
(function() {
function test (argument) {
alert('hey')
}
})()
…只要在URL栏中执行该功能,它就应该是不可访问的.
我很想知道为什么浏览器供应商实现了Javascript-via-the URL的历史…它现在具有bookmarklet等的实际用法,但它似乎没有详细记录.