JavaScript는 해커가 웹 사이트를 공격 할 수있는 도구로 사용될 수 있습니다. JS (JavaScript)에 의해 악의적 인 스크립트를 주입하는 것이 방법 중 하나입니다. 그렇다면 JS 주입 공격을 방지하는 방법을 배우자? 다음은 좋은 진술입니다. 공유하십시오.
JavaScript 주입 공격은 무엇입니까?
사용자로부터 컨텐츠 입력을 수락하고이를 다시 즐길 때마다 웹 사이트는 JavaScript 주입 공격에 취약합니다. JavaScript 주입 공격에 취약한 특정 응용 프로그램을 살펴 보겠습니다. 고객 피드백 웹 사이트가 작성되었다고 가정 해 봅시다. 고객은 웹 사이트를 방문하여 제품에 대한 피드백 정보를 입력 할 수 있습니다. 고객이 피드백을 제출하면 피드백 정보가 피드백 페이지에서 재생됩니다.
고객 피드백 웹 사이트는 간단한 웹 사이트입니다. 불행히도이 웹 사이트는 JavaScript 주입 공격에 취약합니다.
다음 텍스트가 고객 피드백 양식에 입력되었다고 가정합니다.
<cript> Alert ( "boo!") </script>
이 텍스트는 경고 메시지 상자를 표시하는 JavaScript 스크립트를 나타냅니다. 누군가이 스크립트를 고객 피드백 양식에 제출 한 후에는 메시지 boo! 앞으로 고객 피드백 웹 사이트를 방문하면 공격을 보여줄 것입니다. 또한 다른 사람들이 JavaScript 주입 공격을 통해 그것을 파괴 할 수 없다고 생각할 수도 있습니다.
이제 JavaScript 주입 공격에 대한 첫 번째 반응은이를 무시하는 것일 수 있습니다. JavaScript 주입 공격은 무해한 것일 뿐이며 불행히도 해커는 자바 스크립트를 웹 사이트에 주입하여 방해 행위를합니다. JavaScript 주입 공격은 XSS (Cross-Site Scripting) 공격을 수행하는 데 사용될 수 있습니다. 크로스 사이트 스크립팅 공격에서 기밀 사용자 정보를 도난 당하고 다른 웹 사이트로 보낼 수 있습니다.
예를 들어, 해커는 JavaScript 주입 공격을 사용하여 다른 사용자 브라우저에서 쿠키 값을 훔칠 수 있습니다. 브라우저 쿠키에 민감한 정보 (예 : 암호, 신용 카드 계정 또는 사회 보장 번호)가 저장되면 해커는 JavaScript 주입 공격을 사용하여이를 훔칠 수 있습니다. 또는 사용자가 페이지의 양식 필드에 민감한 정보를 입력하고 JavaScript 공격으로 페이지가 손상되면 해커는 주입 된 JavaScript를 사용하여 양식 데이터를 가져와 다른 웹 사이트로 보낼 수 있습니다.
큰 관심을 기울이십시오. JavaScript 주입 공격을 진지하게 받아들이고 사용자의 기밀 정보를 보호하십시오. 다음 두 섹션에서는 ASP.NET MVC 응용 프로그램이 JavaScript 주입의 공격을 방지하는 두 가지 기술에 대해 설명합니다.
방법 1 : 뷰에서 HTML 인코딩
JavaScript 주입 공격을 방지하는 쉬운 방법은 뷰에서 데이터를 재생 할 때 HTML의 모든 웹 사이트 사용자가 입력 한 데이터를 인코딩하는 것입니다.
예를 들면 : <%= html.encode (피드백 .message)%>
문자열을 인코딩하기 위해 HTML을 사용하는 의미는 무엇입니까? HTML을 사용하여 문자열을 인코딩 할 때 <및>와 같은 위험한 문자는 <및>와 같은 HTML 엔티티로 대체됩니다. 따라서 문자열 <cript> alert ( "boo!") </script>가 html을 사용하여 인코딩되면 <cript> alert ( "boo!") </script>로 변환됩니다. 브라우저는 인코딩 된 문자열을 구문 분석 할 때 더 이상 JavaScript 스크립트를 실행하지 않습니다. 대신 무해한 페이지가 표시됩니다
방법 2 : 데이터베이스에 쓰기 전에 HTML 인코딩
보기에서 데이터를 표시 할 때 HTML을 사용하여 데이터를 인코딩하는 것 외에도 데이터베이스에 제출하기 전에 HTML을 사용하여 데이터를 인코딩 할 수도 있습니다. 두 번째 방법은 프로그램의 4 목록에서 컨트롤러의 경우입니다.
좋다:
public actionResult 만들기 (문자열 메시지) {// 피드백 add beidentvar newFeedback = new 피드백 (); newFeedback.Message = server.htmlenCode (메시지); newFeedBack.EntryDate = DateTime.Now; DB.FeedBacks.InsertOnsUbmit (newFeedBack); DB.SubMitchAnges (); // REDIRECTRETURN 리디렉션 연합 ( "index");}메시지 값은 데이터베이스에 제출하기 전에 Create () 작업에서 인코딩 된 HTML입니다. 보기에서 메시지가 다시 표시되면 메시지가 HTML 인코딩되므로 메시지에 주입 된 JavaScript가 수행되지 않습니다.
요약
종종 사람들은이 튜토리얼에서 논의 된 첫 번째 방법을 사용하는 것을 선호하며 두 번째 방법이 아닙니다. 두 번째 접근법의 문제점은 HTML에 인코딩 된 데이터가 결국 데이터베이스에 유지된다는 것입니다. 다시 말해, 데이터베이스의 데이터에는 이상한 문자가 포함됩니다. 이것의 단점은 무엇입니까? 웹 페이지가 아닌 양식으로 데이터베이스 데이터를 표시 해야하는 경우 문제가 발생합니다. 예를 들어 Windows Forms 응용 프로그램에서는 데이터를 쉽게 표시 할 수 없습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.