什么是JavaScript注入攻擊?
Javascript可以作為黑客攻擊網(wǎng)站的一種工具,其中注入js(javascript)惡意腳本就是其中一種手段之一,那么下面,大家來(lái)學(xué)習(xí)一下如何預(yù)防js的注入攻擊呢?以下有一個(gè)不錯(cuò)的陳述,跟大家分享:
什么是 JavaScript 注入攻擊?
每當(dāng)接受用戶輸入的內(nèi)容并重新顯示這些內(nèi)容時(shí),網(wǎng)站就很容易遭受 JavaScript 注入攻擊。讓我們研究一個(gè)容易遭受 JavaScript 注入攻擊的具體應(yīng)用程序。假設(shè)已經(jīng)創(chuàng)建了一個(gè)客戶反饋網(wǎng)站??蛻艨梢栽L問(wèn)網(wǎng)站并輸入對(duì)產(chǎn)品的反饋信息。當(dāng)客戶提交反饋時(shí),反饋信息重新顯示在反饋?lái)?yè)面上。
客戶反饋網(wǎng)站是一個(gè)簡(jiǎn)單的網(wǎng)站。不幸的是,此網(wǎng)站容易遭受 JavaScript 注入攻擊。
假設(shè)正在將以下文本輸入到客戶反饋表單中:
<script>alert(“Boo!”)</script>
此文本表示顯示警告消息框的 JavaScript 腳本。在某人將此腳本提交到客戶反饋表單后,消息 Boo! 會(huì)在將來(lái)任何人訪問(wèn)客戶反饋網(wǎng)站時(shí)顯示的攻擊。您可能還認(rèn)為別人不會(huì)通過(guò) JavaScript 注入攻擊搞破壞。
現(xiàn)在,您對(duì) JavaScript 注入攻擊的第一反應(yīng)也許是不理會(huì)。您可能認(rèn)為 JavaScript 注入攻擊不過(guò)是一種無(wú)傷大雅,不幸的是,黑客會(huì)通過(guò)在網(wǎng)站中注入 JavaScript 進(jìn)行破壞活動(dòng)。使用 JavaScript 注入攻擊可以執(zhí)行跨站腳本 (XSS) 攻擊。在跨站腳本攻擊中,可以竊取保密的用戶信息并將信息發(fā)送到另一個(gè)網(wǎng)站。
例如,黑客可以使用 JavaScript 注入攻擊竊取來(lái)自其他用戶瀏覽器的 Cookies 值。如果將敏感信息(如密碼、信用卡帳號(hào)或社會(huì)保險(xiǎn)號(hào)碼)保存在瀏覽器 Cookies 中,那么黑客可以使用 JavaScript 注入攻擊竊取這些信息?;蛘撸绻脩魧⒚舾行畔⑤斎氲巾?yè)面的表單字段中,而頁(yè)面受到 JavaScript 攻擊的危害,那么黑客可以使用注入的 JavaScript 獲取表單數(shù)據(jù)并將其發(fā)送到另一個(gè)網(wǎng)站。
請(qǐng)高度重視。認(rèn)真對(duì)待 JavaScript 注入攻擊并保護(hù)用戶的保密信息。在接下來(lái)的兩部分中,我們將討論防止 ASP.NET MVC 應(yīng)用程序受到 JavaScript 注入攻擊的兩種技術(shù)。
方法 1:視圖中的 HTML 編碼
阻止 JavaScript 注入攻擊的一種簡(jiǎn)單方法是重新在視圖中顯示數(shù)據(jù)時(shí),用 HTML 編碼任何網(wǎng)站用戶輸入的數(shù)據(jù)
如:<%=Html.Encode(feedback.Message)%>
使用 HTML 編碼一個(gè)字符串的含意是什么呢?使用 HTML 編碼字符串時(shí),危險(xiǎn)字符如 < 和 > 被替換為 HTML 實(shí)體,如 < 和 >。所以,當(dāng)使用 HTML 編碼字符串 <script>alert(“Boo!”)</script>時(shí),它將轉(zhuǎn)換為 <script>alert(“Boo!”)</script>。瀏覽器在解析編碼的字符串時(shí)不再執(zhí)行 JavaScript 腳本。而是顯示無(wú)害的頁(yè)面
方法 2:寫(xiě)入數(shù)據(jù)庫(kù)之前的 HTML 編碼
除了在視圖中顯示數(shù)據(jù)時(shí)使用 HTML 編碼數(shù)據(jù),還可以在將數(shù)據(jù)提交到數(shù)據(jù)庫(kù)之前使用 HTML 編碼數(shù)據(jù)。第二種方法正是程序清單 4 中 controller 的情況。
如:
public ActionResult Create(string message)
{
// Add feedback
var newFeedback = new Feedback();
newFeedback.Message = Server.HtmlEncode(message);
newFeedback.EntryDate = DateTime.Now;
db.Feedbacks.InsertOnSubmit(newFeedback);
db.SubmitChanges();
// Redirect
return RedirectToAction(“Index”);
}
請(qǐng)注意,Message 的值在提交到數(shù)據(jù)庫(kù)之前是在 Create() 操作中經(jīng)過(guò) HTML 編碼的。當(dāng)在視圖中重新顯示 Message 時(shí),Message 被 HTML 編碼,因而不會(huì)執(zhí)行任何注入到 Message 中的 JavaScript。
總結(jié)
通常,人們喜歡使用本教程中討論的第一種方法,而不喜歡使用第二種方法。第二種方法的問(wèn)題在于在數(shù)據(jù)庫(kù)中最終會(huì)保留 HTML 編碼的數(shù)據(jù)。換言之,數(shù)據(jù)庫(kù)中的數(shù)據(jù)會(huì)包含奇怪的字符。這有什么壞處呢?如果需要用除網(wǎng)頁(yè)以外的形式顯示數(shù)據(jù)庫(kù)數(shù)據(jù),則將遇到問(wèn)題。例如,不能輕易在 Windows Forms 應(yīng)用程序中顯示數(shù)據(jù)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 淺談html轉(zhuǎn)義及防止javascript注入攻擊的方法
- linux抵御DDOS攻擊 通過(guò)iptables限制TCP連接和頻率
- 淺談利用JavaScript進(jìn)行的DDoS攻擊原理與防御
- Linux系統(tǒng)防CC攻擊自動(dòng)拉黑IP增強(qiáng)版(Shell腳本)
- linux封鎖IP簡(jiǎn)單防御UDP攻擊
- IP攻擊升級(jí),程序改進(jìn)以對(duì)付新的攻擊
- php下網(wǎng)站防IP攻擊代碼,超級(jí)實(shí)用
- 跨站式腳本(Cross-SiteScripting)XSS攻擊原理分析
- 分析攻擊IP來(lái)源地與防御IP攻擊的應(yīng)對(duì)策略
相關(guān)文章
JavaScript實(shí)現(xiàn)扯網(wǎng)動(dòng)畫(huà)效果的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript語(yǔ)言實(shí)現(xiàn)扯網(wǎng)動(dòng)畫(huà)效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JS有一定的幫助,需要的可以參考一下2022-06-06
JavaScript監(jiān)測(cè)ActiveX控件是否已經(jīng)安裝過(guò)的代碼
這是通用的方法,只需要把唯一的Activex的clsid和任意一個(gè)屬性或方法名傳進(jìn)來(lái)就可以判斷了。(找了兩個(gè)小時(shí)才找到 -_-!)2008-09-09
Javascript實(shí)現(xiàn)圖片懶加載插件的方法
最近由于公司項(xiàng)目需要,要利用Javascript實(shí)現(xiàn)圖片懶加載效果,嘗試起來(lái)發(fā)現(xiàn)并不難,于是將自己的實(shí)現(xiàn)過(guò)程分享出來(lái)給大家學(xué)習(xí)和參考,希望對(duì)有需要的朋友們帶來(lái)一定的幫助,感興趣的朋友們下面來(lái)一起看看吧。2016-10-10
關(guān)閉頁(yè)面window.location事件未執(zhí)行的原因及解決方法
這篇文章主要介紹了關(guān)閉頁(yè)面window.location事件未執(zhí)行的原因及解決方法,需要的朋友可以參考下2014-09-09
JAVASCRIPT實(shí)現(xiàn)的WEB頁(yè)面跳轉(zhuǎn)以及頁(yè)面間傳值方法
在WEB頁(yè)面中,我們實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的方法通常是用LINK,BUTTON LINK ,IMG LINK等等,由用戶點(diǎn)擊某處,然后直接由瀏覽器幫我們跳轉(zhuǎn)。2010-05-05
在Javascript操作JSON對(duì)象,增加 刪除 修改的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇在Javascript操作JSON對(duì)象,增加 刪除 修改的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
addEventListener()與removeEventListener()解析
這篇文章主要為大家詳細(xì)介紹了addEventListener()與removeEventListener(),用于處理指定和刪除事件處理程序操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

