在地址栏如何直接使用javascript函数?

JavaScript016

在地址栏如何直接使用javascript函数?,第1张

方法一:

打开一个网页以后,清除地址栏,然后在地址栏键入“javascript:alert(‘hello world’)”。

然后就会弹出一个对话框显示’hello world’, 当然你可以在这里键入更多的代码,来运行代码。

最直接的方法是用来查询该页面上的一些信息,比如查询背景颜色:javascript:alert(document.body.style.backgroundColor)void(0)

当然你可以查询更多,比如cookie:javascript:alert(document.cookie)

利用javascript重定向:javascript:document.location=http://www.baidu.com。

方法二:

另一个用法是通过void来修改form,通常你可以修改form,提交表单,来得到修改后的结果。假设有个表单有个隐藏field price=100, 你可以通过javascript: oid(document.forms[0].price.value= 100)alert(document.forms[0].price.value)来将这个price的值修改成100, 然后再提交表单。

javascript: 和 mailto: 这两个协议类似,都是html规范中被定义下来的规则,具体从何开始没去查。html跟这两个协议的通信,举下面三个例子:

[a href="http://www.163.com"]

[a href="mailto:[email protected]"]

[a href="javascript:NETS.V5()"] (破折号会被知乎过滤)

这三个都是超链接的形式,浏览器大可将其都识别为,把href的值交给浏览器地址栏处理。例如http:丢到地址栏后就是指向一个网页,mailto:会使浏览器向系统请求邮件服务工具,javascript:会使浏览器触发js解释器。

那既然你都能接受a标签内触发js,地址栏触发就更是基础级功能了。所以在地址栏中输入javascript,不仅能执行独立的脚本功能,还能调用页面当前的全局变量和函数。再有,bookmarklet就是基于这个功能实现的,例如有道云翻译和搜狗云输入法。

其实你不需要担心用户在地址栏输入 JavaScript 代码,如果代码对网页结构造成影响,那只对此用户生效,对其它用户没有影响。

现在有的浏览器直接过滤以 javascript: 开头的网址,大部分浏览器也都有相关选项。

就算用户不在地址栏输入 JavaScript 代码,也可以通过其它途径,例如 Firebug,直接对网站进行修改,不过都是针对此用户而言。

最关键的问题是永远不要信任 JavaScript,后台程序的二次验证是必须有的。

你可以 Google 一下 javascript xss 或者 javascript address bar injection,不需要英文有多好,打开页面里面有很多例子。敏感的代码打在这里容易被弊。