這次帶給大家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程式碼:
#圖片被命名為“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注入使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

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

SublimeText3 Linux新版
SublimeText3 Linux最新版