国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

什么是JavaScript注入攻擊?

2024-05-06 16:31:59
字體:
來源:轉載
供稿:網友

Javascript可以作為黑客攻擊網站的一種工具,其中注入js(javascript)惡意腳本就是其中一種手段之一,那么下面,大家來學習一下如何預防js的注入攻擊呢?以下有一個不錯的陳述,跟大家分享:

什么是 JavaScript 注入攻擊?
每當接受用戶輸入的內容并重新顯示這些內容時,網站就很容易遭受 JavaScript 注入攻擊。讓我們研究一個容易遭受 JavaScript 注入攻擊的具體應用程序。假設已經創建了一個客戶反饋網站。客戶可以訪問網站并輸入對產品的反饋信息。當客戶提交反饋時,反饋信息重新顯示在反饋頁面上。

客戶反饋網站是一個簡單的網站。不幸的是,此網站容易遭受 JavaScript 注入攻擊。

假設正在將以下文本輸入到客戶反饋表單中:

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

此文本表示顯示警告消息框的 JavaScript 腳本。在某人將此腳本提交到客戶反饋表單后,消息 Boo! 會在將來任何人訪問客戶反饋網站時顯示的攻擊。您可能還認為別人不會通過 JavaScript 注入攻擊搞破壞。

現在,您對 JavaScript 注入攻擊的第一反應也許是不理會。您可能認為 JavaScript 注入攻擊不過是一種無傷大雅,不幸的是,黑客會通過在網站中注入 JavaScript 進行破壞活動。使用 JavaScript 注入攻擊可以執行跨站腳本 (XSS) 攻擊。在跨站腳本攻擊中,可以竊取保密的用戶信息并將信息發送到另一個網站。

例如,黑客可以使用 JavaScript 注入攻擊竊取來自其他用戶瀏覽器的 Cookies 值。如果將敏感信息(如密碼、信用卡帳號或社會保險號碼)保存在瀏覽器 Cookies 中,那么黑客可以使用 JavaScript 注入攻擊竊取這些信息。或者,如果用戶將敏感信息輸入到頁面的表單字段中,而頁面受到 JavaScript 攻擊的危害,那么黑客可以使用注入的 JavaScript 獲取表單數據并將其發送到另一個網站。

請高度重視。認真對待 JavaScript 注入攻擊并保護用戶的保密信息。在接下來的兩部分中,我們將討論防止 ASP.NET MVC 應用程序受到 JavaScript 注入攻擊的兩種技術。 

方法 1:視圖中的 HTML 編碼 

阻止 JavaScript 注入攻擊的一種簡單方法是重新在視圖中顯示數據時,用 HTML 編碼任何網站用戶輸入的數據

如:<%=Html.Encode(feedback.Message)%>

使用 HTML 編碼一個字符串的含意是什么呢?使用 HTML 編碼字符串時,危險字符如 < 和 > 被替換為 HTML 實體,如 < 和 >。所以,當使用 HTML 編碼字符串 <script>alert(“Boo!”)</script>時,它將轉換為 <script>alert(“Boo!”)</script>。瀏覽器在解析編碼的字符串時不再執行 JavaScript 腳本。而是顯示無害的頁面

方法 2:寫入數據庫之前的 HTML 編碼
除了在視圖中顯示數據時使用 HTML 編碼數據,還可以在將數據提交到數據庫之前使用 HTML 編碼數據。第二種方法正是程序清單 4 中 controller 的情況。

如:

public ActionResult Create(string message){// Add feedbackvar newFeedback = new Feedback();newFeedback.Message = Server.HtmlEncode(message);newFeedback.EntryDate = DateTime.Now;db.Feedbacks.InsertOnSubmit(newFeedback);db.SubmitChanges();  // Redirectreturn RedirectToAction(“Index”);}

請注意,Message 的值在提交到數據庫之前是在 Create() 操作中經過 HTML 編碼的。當在視圖中重新顯示 Message 時,Message 被 HTML 編碼,因而不會執行任何注入到 Message 中的 JavaScript。

總結

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。

 


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 祁东县| 星座| 丘北县| 信宜市| 呼和浩特市| 天台县| 肥东县| 交口县| 景德镇市| 遂宁市| 扎鲁特旗| 夏津县| 安远县| 工布江达县| 嘉善县| 项城市| 偃师市| 鄂伦春自治旗| 南康市| 志丹县| 汉中市| 扎鲁特旗| 桑日县| 清水河县| 遂川县| 项城市| 郯城县| 富川| 金溪县| 罗山县| 天台县| 曲水县| 德钦县| 章丘市| 榆林市| 方山县| 台安县| 任丘市| 桦川县| 屯门区| 广州市|