如何通过URL栏将JavaScript注入网站?

时间:2013-09-29 13:51:44

标签: javascript html code-injection

以下是我在页面中注入的JavaScript代码:

javascript:{document.head.innerHTML+='<script>function inject(){alert("hello");}</script>';
document.body.innerHTML+='<button onclick="inject()">Run</button>';}

在URL栏中运行此代码后,我会检查网站的源代码。按钮和功能定义都存在,但按下按钮不会像预期的那样运行警报。

可能是什么问题?

2 个答案:

答案 0 :(得分:8)

  1. 某些浏览器不再接受javascript:直接来自位置栏,他们需要您从书签中调用脚本

  2. 你的语法气味如意。你在这里尝试的将永远不会那样工作

  3. 此语法:

    javascript:(function() { var s = document.createElement("script"); s.src="somejsurl.js";document.getElementsByTagName("head")[0].appendChild(s)})()
    

    可能是一个更好的开始

    要执行此操作,您需要使用

    创建一个html页面
    <a href="javascript:(function() { var s = document.createElement('script'); s.src='somejsurl.js';document.getElementsByTagName('head')[0].appendChild(s)})()">Exec</a>
    

    在href代码中使用单引号并加载并将“Exec”拖动到书签

    在测试时,Chrome和Firefox都有一个可以使用的命令行

    如果要创建脚本而不加载脚本,则需要在创建的按钮中内联脚本:

    javascript:(function() { var b = document.createElement("button"); b.onclick=function() { alert('hello')}; b.innerTHML='Hello';})()
    

答案 1 :(得分:1)

为了安全起见,有些浏览器决定限制网址栏中的javascript使用...