English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Javascript는 웹사이트를 해킹하는 도구로 사용될 수 있으며, 그 중 하나는 js(JavaScript) 악성 스크립트를注入하는 것입니다. 그렇다면, 다음은 js의注入 공격을 예방하는 방법을 배웁니다.63;아래는 좋은 설명이 있으니 공유해 보겠습니다:
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) { // 피드백 추가 var newFeedback = new Feedback(); newFeedback.Message = Server.HtmlEncode(message); newFeedback.EntryDate = DateTime.Now; db.Feedbacks.InsertOnSubmit(newFeedback); db.SubmitChanges(); // Redirect return RedirectToAction("Index"); }
Message의 값은 데이터베이스에 제출하기 전에 Create() 작업에서 HTML 인코딩됩니다. Message가 뷰에서 다시 표시될 때, Message는 HTML 인코딩되어 JavaScript가 Message에注入되지 않습니다.
결론
일반적으로, 사람들은 이 강의에서 논의한 첫 번째 방법을 사용하며, 두 번째 방법을 사용하지 않는 경향이 있습니다. 두 번째 방법의 문제는 데이터베이스에서 최종적으로 HTML 인코딩된 데이터가 저장된다는 점입니다. 다시 말해, 데이터베이스의 데이터에는 이상한 문자가 포함될 수 있습니다. 이는 무엇이 문제일까요? 웹 외의 형식으로 데이터베이스 데이터를 표시해야 할 때 문제가 발생할 수 있습니다. 예를 들어, Windows Forms 애플리케이션에서 데이터를 쉽게 표시할 수 없습니다.
이것이 이 문서의 전체 내용입니다. 많은 도움이 되었기를 바랍니다. 또한,呐喊 강의에 많은 지지를 부탁드립니다.
선언: 이 문서의 내용은 인터넷에서 가져왔으며, 원작자의 소유물입니다. 이 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다.涉嫌 저작권 내용이 발견되면, notice#w로 이메일을 보내 주세요.3codebox.com(이메일을 보내면, #을 @으로 변경해 주세요. 신고를 하고, 관련 증거를 제공하시면, 해당 내용이 실제로 위반된 경우, 이 사이트는 즉시 해당 위반 내용을 삭제합니다.)