4

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

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

我尝试在 Facebook 的地址栏上使用 Javascript,但没有成功。所以必须有办法阻止这种情况..

4

1 回答 1

2

我同意其他评论者的观点,即检测“对函数的调用是在哪里进行的,如果它不是来自地址栏,那么函数应该运行”是一种处理客户端安全性的坏方法,只要有这样的事情.

也就是说,函数范围、闭包以及这与 URL 栏的关系是一个有趣的话题。 这是有关全局变量和范围的更多上下文。简短的版本是,如果您有这样的功能:

function test (argument) {
    alert('hey')
}   

它将可以通过 URL 栏执行,因为它在窗口/全局范围内,这似乎与 javascript URI 一样。而如果您将相同的函数放入闭包中:

(function() {
    function test (argument) {
        alert('hey')
    }       
})()

...就执行 URL 栏中的功能而言,它应该是不可访问的。

我很想知道为什么浏览器供应商实现了 Javascript-via-the-URL 的历史......它现在与书签等有实际用途,但它似乎没有很好的文档记录。

于 2013-11-13T07:28:20.167 回答