搜尋
首頁web前端js教程js注入使用詳解

js注入使用詳解

Apr 23, 2018 am 10:50 AM
javascript使用詳解

這次帶給大家js注入使用詳解,js注入使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

最近剛出了新聞,阿里四名網路安全部門員工利用網頁漏洞寫js腳本搶月餅,於是興致來了,想了解一下這個js腳本到底怎麼寫,各種刷單各種搶槍搶又是怎麼實現的。 

什麼是javascript注入攻擊?

1.每當接受使用者輸入的內容並重新顯示這些內容時,網站就很容易遭受 JavaScript 注入攻擊。讓我們研究一個容易遭受 JavaScript 注入攻擊的具體應用程式。假設已經創建了一個客戶回饋網站。客戶可以造訪網站並輸入對產品的回饋資訊。當客戶提交回饋時,回饋訊息會重新顯示在回饋頁面上。
客戶回饋網站是一個簡單的網站。不幸的是,此網站容易遭受 JavaScript 注入攻擊。
假設正在將以下文字輸入到客戶回饋表單中: 

<script>alert(“Attack!”)</script> 

#此文字表示顯示警告訊息方塊的JavaScript 腳本。在某人將此腳本提交到客戶回饋表單後,訊息Attack! 會在將來任何人造訪客戶回饋網站時顯示。

2.還有一種就是在瀏覽器網址列輸入一段js程式碼,用來改變頁面js變數、頁面標籤的內容。 

使用Javascript注入,使用者不需要關閉或儲存網頁就可以改變其內容,這是在瀏覽器的網址列上完成的。指令的語法如下: 

javascript:alert(#command#)

例如,如果你想在http://www.example.com網站上看到一個alert警告框,那麼先在網址列上輸入URL並等待頁面載入完成,然後刪掉URL並輸入: 

javascript:alert("Hello World")

作為新的URL。這將彈出一個「Hello World」警告框,使用這項技術幾乎可以改變網頁的任何內容,例如圖片。假設有一張網站logo圖片,我們透過查看頁面原始檔找到其中一段HTML程式碼: 

js注入使用詳解

#圖片被命名為“hi”,原始檔案是“hello.gif”,我們想要把它改成儲存在我們網站(http://www.mysite.com)上的“bye.jpeg”文件,因此圖片完整的URL位址是http://www.mysite.com/bye.jpeg,使用Javascript注入, 我們只需要在網址列上輸入: 

javascript:alert(document .hi.src="http://www.mysite.com/bye.jpeg")

#你將會看到彈出「http://www.mysite.com/bye.jpeg 「alert警告,然後圖片就被更改了。需要注意的是,這些更改只是暫時的!如果你刷新頁面或重新進入,你的更改將會消失,因為你只是在你的PC作了這些更改,而不是在網頁伺服器上。

使用相同的方法我們可以查看或更改變數的值,例如我們在網頁上找到一段這樣的程式碼: 

<script>
var a="test"
</script>

意思是變數a的值為“test”,現在我們輸入: 

javascript:alert(a) 

然後我們將其值改為“hello”: 

#javascript:alert(a="hello")

Javascript注入通常被用來更改表單屬性,假設有一段這樣的程式碼: 


我們想讓表單發送到我們的郵箱,而不是someone@somewhere.com。可使用以下指令: 

javascript:alert(document.format.mail.value="me@hacker.com")

•也许你已经注意到了这些命令的层次关系:
 •我们按照从左到右的顺序依次说明:
 •1)最左边是document
 •2)然后是我们想要更改的对象名(比如document.hi.src)或其包含的对象(比如document.format.mail.value)
 •3)最后是我们想要更改的属性(比如源路径:document.hi.src,或变量值:document.format.mail.value)
 •4)使用“.”号分隔
 •5)当我们想要更改属性值的时候,我们使用“=”号和新的属性值
 •*注释:当新的属性值为字符串时(比如:document.format.mail.value="me@hacker.com")需要用双引号把它括起来。
 •如果我们想要把它作为一个变量的值,则不需要使用双引号""。例如我们想要将变量b的值赋予变量a,我们可以输入javascript:alert(a=b)。
 •但是,页面中的大部分标签都没有名字,比如: 


在这段代码中没有表单名,综合上面这些信息,可以使用此命令: 

javascript:alert(document. .mail.value="me@hacker.com")

在这种情况下我们必须统计并找出表单序号,下面是一个例子: 


•在以上代码中我们看见了3个表单,但我们只对第二个感兴趣,因此我们想要的表单序号就是2。不要忘记我们是从1开始计算的,比如1,2,3,4...而javascript却从0开始计算,比如0,1,2,3...所以真正的表单序号是1,不是2,通常我们要把找到的表单序号减一。我们将用这个序号来补全我们的命令:

javascript:alert(document.forms[1].mail.value="me@hacker.com")

•这样你就可以更改没有名字的图片或链接了,你可以把“forms”换成任何你想要的标签类型。对于图片就是 

javascript:alert(document.images[3].src="#the url of the picture you want#")

对于链接就是 

javascript:alert(document.links[0].href="#the url you want#")

 最后,我们可以用这个技巧来编辑cookies。下面的命令由triviasecurity.net的Dr_aMado编写,我只修改了一点点,让它在用户编辑之前显示出来。你只要把它们复制到地址栏就可以了:

javascript:alert(window.c=function a(n,v,nv){c=document.cookie;c=c.substring(c.indexOf(n)+n.length,c.length);
c=c.substring(1,( (c.indexOf(";")>-1) ? c.indexOf(";") : c.length));nc=unescape(c).replace(v,nv);
document.cookie=n+"="+escape(nc);return unescape(document.cookie);});
alert('The cookie is: "'+document.cookie+'"');alert(c(prompt("The name of the cookie:",""),
prompt("Change this value:",""),prompt("with this:","")))

//如果你想要手动更改你的cookie,可以使用下面这条命令:

javascript:alert(document.cookie)

这将显示你的当前cookie,假设是“userid=1”,如果你想把它改成“userid=2”,可以使用下列命令:

javascript:alert(document.cookie="userid=2")

最后我必须强调的是,所有的更改都只是在客户端!就像是把网页保存在你的PC上然后修改它。尽管如此,使用这一技巧你仍然可以欺骗页面(例如cookies)或绕过安全验证。例如一些网页会检测用户发送数据的位置,如果从http://www.test.com/form.php发送数据到http://www.test.com/check.php,check.php可能会检测数据是否来自http: //www.test.com/form.php上的表单。除此之外,如果你打算在页面中输入你自己的JavaScript代码,通过使用一些这样的技巧,你将能够更改图片并保持不变!

最后的最后,既然js注入这么可怕,我们自己写的网站有什么解决办法来防止js注入呢? 

方法一:

阻止 JavaScript 注入攻击的一种简单方法是重新在视图中显示数据时,用 HTML 编码任何网站用户输入的数据
如:
使用 HTML 编码一个字符串的含意是什么呢?使用 HTML 编码字符串时,危险字符如 被替换为 HTML 实体,如 。所以,当使用 HTML 编码字符串 <script>alert("Boo!")</script> 时,它将转换为 <script>alert("Attack!")</script>。浏览器在解析编码的字符串时不再执行 JavaScript 脚本。而是显示无害的页面。 

方法二:

除了在視圖中顯示資料時使用 HTML 編碼數據,還可以在將資料提交到資料庫之前使用 HTML 編碼資料。

StringEscapeUtils.escapeHtml("前台提交的資料"); 

#通常,人們喜歡使用本教程中討論的第一種方法,而不喜歡使用第二種方法。第二種方法的問題在於在資料庫中最終會保留 HTML 編碼的資料。換言之,資料庫中的資料會包含奇怪的字元。這有什麼壞處呢?如果需要以網頁以外的形式顯示資料庫數據,則會遇到問題。例如,不能輕易在 Windows Forms 應用程式中顯示資料。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

!=、== 、!==、===使用總結

##JS中時間單位比較的方法
#

以上是js注入使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版