禁止在URL地址栏上使用Javascript

时间:2013-11-13 06:54:40

标签: javascript jquery address-bar

我为我的网站编写了很多javascript函数,最近我发现只需在URL栏上编写javascript:FunctionName();即可调用这些函数。调用这样的函数可能对我的网站很脆弱,那么有什么方法可以防止这种情况发生吗?有什么方法可以停止在地址栏上使用Javascript吗?

任何微妙的方法也可以像检测函数调用的任何方法一样有用,如果它不是来自地址栏那么函数应该运行,否则它不会运行?

我尝试在Facebook上的地址栏上使用Javascript,但它不起作用。所以必须有办法阻止这个..

1 个答案:

答案 0 :(得分:2)

我同意其他评论者发现“对函数的调用在哪里以及它是否来自地址栏然后函数应该运行”是一种不好的方法来处理客户端安全性,只要有这样的事情。

那就是说,函数范围,闭包以及它与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栏中执行该功能,就应该无法访问。

我很想知道为什么浏览器供应商通过URL实现Javascript的历史...它现在具有bookmarklet等的实际用法,但它似乎没有很好地记录。< / p>