【问题标题】:How to inject JavaScript into a website through the URL bar?如何通过 URL 栏将 JavaScript 注入网站?
【发布时间】:2013-09-29 13:51:44
【问题描述】:

这是我注入页面的 JavaScript 代码:

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

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

可能是什么问题?

【问题讨论】:

  • 因为语法完全错误
  • 可能该站点进行了适当的输出过滤以防止 XSS 攻击。
  • 为什么要在&lt;head&gt; 中添加一些文本来定义一个函数?什么按钮?您是否真的在检查源代码(因为听起来您正在检查实时 DOM)?
  • 你需要将你的JS代码注入到一个
  • 如果你想直接在浏览器中执行js,最好的方法是使用元素检查器的web控制台,它至少在firefox和chrome中是内置的...

标签: javascript html code-injection


【解决方案1】:
  1. 某些浏览器不再接受 javascript:直接从地址栏,它们需要您从书签调用脚本

  2. 您的语法带有一厢情愿的味道。你在这里尝试的东西永远不会那样工作

这个语法:

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';})()

【讨论】:

    【解决方案2】:

    出于安全考虑,某些浏览器已决定限制在 URL 栏中使用 javascript...

    【讨论】:

    • 这不是唯一的原因。他的剧本永远行不通
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2015-09-01
    • 2011-06-03
    • 2018-07-19
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多