2013-09-29 138 views
-2

這裏是JavaScript代碼我注入的頁面:如何通過URL欄將JavaScript注入網站?

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

運行在地址欄此代碼後,我檢查該網站的源代碼。按鈕和函數定義都存在,但按下按鈕不會像預期的那樣運行警報。

可能是什麼問題?

+3

因爲語法是完全錯誤的 – mplungjan

+0

可能該網站會進行適當的輸出過濾以防止XSS攻擊。 – thefourtheye

+1

爲什麼要給''添加一些文字來定義一個函數?什麼按鈕?你真的在檢查源代碼嗎(因爲它聽起來像你正在檢查活DOM)? – Quentin

回答

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

一些瀏覽器已決定限制爲安全起見,在地址欄JavaScript中使用...

+0

這裏不是唯一的原因。他的劇本永遠不會奏效 – mplungjan