国产一区二区亚洲精品-国产一区二区影视-国产一区二区影院-国产一区二区在线不卡-国产一区二区在线观看免费

防止JavaScript 注入攻擊

2016-03-14 14:03原創(chuàng)HTML5+JS

什么是 JavaScript 注入攻擊?

每當(dāng)接受用戶輸入的內(nèi)容并重新顯示這些內(nèi)容時(shí),網(wǎng)站就很容易遭受 JavaScript 注入攻擊。讓我們研究一個(gè)容易遭受 JavaScript 注入攻擊的具體應(yīng)用程序。假設(shè)已經(jīng)創(chuàng)建了一個(gè)客戶反饋網(wǎng)站。客戶可以訪問(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í)體,如 &lt; 和 &gt;。所以,當(dāng)使用 HTML 編碼字符串 <script>alert(“Boo!”)</script>時(shí),它將轉(zhuǎn)換為 &lt;script&gt;alert(“Boo!”)&lt;/script&gt;。瀏覽器在解析編碼的字符串時(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ù)。

附加:神一般的注入

這是一個(gè)有技術(shù)含量的號(hào)牌遮擋。我們先不說(shuō)其是不是能奏效,不過(guò),這個(gè)創(chuàng)意相當(dāng)?shù)腘B啊。當(dāng)你駕車(chē)通過(guò)某些路口時(shí),被攝像頭捕捉到你的車(chē)牌,通過(guò)OCR變成文本(圖像識(shí)別技術(shù),這里為車(chē)牌識(shí)別技術(shù)),然后他就DROP掉數(shù)據(jù)庫(kù),于是,上圖的這個(gè)車(chē)牌就成了SQL注入。

北京鼎盛宏利科技有限公司 | TEL/FAX:010-52237199 | Email:admin@dshlit.com

Copyright ?DSHLIT.COM. All Rights Reserved. | 京ICP備14058301-1號(hào)

在線QQ 13683107933
主站蜘蛛池模板: 伊人一区 | mm在线视频免费看 | 在线播放三级 | 在线看的网站 | 国产成年女一区二区三区 | 国产在线播放网址 | 国产三级自拍视频 | 欧美性视频网站 | www午夜视频 | 女人被狂躁视频免费网站 | 国产大伊香蕉精品视频 | 日韩不卡在线观看 | 久久久久久久国产精品影院 | baoyu122.永久免费视频 | 九九涩| 国产在线ts人妖免费视频 | 后式大肥臀国产在线 | 热伊人99re久久精品最新地 | 91精品天美精东蜜桃传媒免费 | 国产精品欧美亚洲 | 亚洲第一视频网 | 国产精品女主播自在线拍 | 欧美日韩国产一区二区三区在线观看 | 欧美线在线精品观看视频 | 日韩欧美a级高清毛片 | 亚洲一区视频 | 国产精品果冻传媒在线 | 国产国产人免费人成免费视频 | 国产91精选在线观看麻豆 | 欧美一区二区在线播放 | 亚洲线精品久久一区二区三区 | 黄 色 片成 人免费观看 | 精品综合久久88色鬼首页 | 亚洲欧洲日韩国产aa色大片 | 成年黄页网站视频全免费 | 婷婷丁香啪啪 | www.大香| 欧美三级视频在线观看 | 亚洲日日 | 免费大黄网站在线看 | 久久免费福利视频 |