> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 일반적인 보안 취약점 및 자동 탐지 기술_javascript 기술

JavaScript의 일반적인 보안 취약점 및 자동 탐지 기술_javascript 기술

WBOY
풀어 주다: 2016-05-16 15:43:34
원래의
1796명이 탐색했습니다.

머리말

Web2.0의 발전과 Ajax 프레임워크의 인기로 인해 리치 클라이언트 웹 애플리케이션(RIA)이 날로 증가하고 있으며 점점 더 많은 로직이 서버 측에서 서버 측으로 이전되기 시작했습니다. 이러한 로직은 일반적으로 모두 JavaScript 언어를 사용하여 작성됩니다. 그러나 불행하게도 개발자들은 일반적으로 JavaScript 코드의 보안에 많은 관심을 기울이지 않습니다. IBM X-Force 2011 중기 동향 보고서에 따르면 Fortune 500대 웹사이트와 일반적으로 알려진 웹사이트의 40%가 JavaScript 보안 취약점을 갖고 있습니다. 이 기사에서는 독자가 일상적인 코딩 작업에서 이러한 보안 취약점을 피할 수 있도록 돕기 위해 코드와 함께 일반적인 JavaScript 보안 취약점을 보여줍니다. 또한 클라이언트측 JavaScript 보안 취약점의 원칙은 서버측 보안 취약점의 원칙과 약간 다릅니다. 현재 JavsScript 보안 취약점을 자동으로 탐지하는 데는 큰 기술적 어려움이 있습니다. 이 기사에서는 사용 사례를 독자들과 공유합니다. IBM Rational AppScan Standard Edition V8.0의 새로운 기능(JSA(JavaScript Security Analyser) 기술은 JavaScript 보안 취약성을 자동으로 감지합니다.

일반적인 JavaScript 보안 취약점

2010년 12월 IBM은 웹 애플리케이션의 클라이언트 측 JavaScript 보안 취약점에 대한 백서를 발표했으며, 여기에는 IBM Security Research Institute에서 실시한 JavaScript 보안 상태 설문 조사가 포함되어 있습니다. 샘플 데이터에는 Fortune 500대 기업의 웹사이트를 포함한 675개의 웹사이트와 IT 기업, 웹 애플리케이션 보안 서비스 회사, 소셜 네트워킹 사이트 등을 포함한 유명 웹사이트 175개가 포함되어 있습니다. 이러한 웹사이트의 정상적인 작동에 영향을 주지 않기 위해 연구원들은 로그인 없이 액세스할 수 있는 페이지의 하위 집합(사이트당 최대 200페이지)만 검사하는 비침해적 크롤러를 사용했습니다. 이러한 페이지는 저장되었으며, 연구원들은 IBM의 JavaScript 보안 분석 기술을 사용하여 DOM 기반 크로스 사이트 스크립팅 및 리디렉션 취약성에 중점을 두고 오프라인으로 이러한 페이지를 분석했습니다.

테스트 결과는 놀랍습니다. 이러한 유명 웹사이트 중 14%에는 심각한 JavaScript 보안 문제가 있습니다. 해커는 이러한 취약점을 이용해 악성 소프트웨어를 심고, 피싱 사이트를 심고, 사용자 세션을 하이재킹할 수 있습니다. 더욱 놀라운 점은 IBM의 JavaScript 보안 분석 기술이 성숙해짐에 따라 2011년 중반 X-Force 보고서에 따르면 IBM이 위에서 언급한 유명 웹사이트를 다시 테스트하여 더 많은 보안 취약점을 발견했으며 웹사이트의 약 40%에 JavaScript 보안이 적용되어 있는 것으로 나타났습니다. 취약점.

java 기업 수준 범용 권한 보안 프레임워크 소스 코드 SpringMVC mybatis 또는 최대 절전 모드 ehcache shiro druid 부트스트랩 HTML5

다음 기사에서는 독자가 코드와 함께 이러한 일반적인 JavaScript 보안 취약점을 보여줌으로써 독자가 실제 코딩 과정에서 이러한 보안 문제를 발견하고 가능한 한 빨리 이러한 위험을 피할 수 있도록 합니다.

DOM 기반 크로스 사이트 스크립팅

우리는 XSS(Cross Site Script, Cross-Site Scripting Attack이라고도 함)에 대해 모두 들어보셨을 것입니다. 이는 공격자가 합법적인 웹 페이지 코드에 악성 스크립트 코드(일반적으로 HTML 코드 및 JavaScript)를 삽입한 후 공격자는 이러한 악성 스크립트 코드를 이용하여 세션 하이재킹 등의 공격을 수행할 수 있습니다. 크로스 사이트 스크립팅은 일반적으로 반사형과 영구형으로 구분됩니다. 반사형 크로스 사이트 스크립팅은 요청 데이터가 서버 응답 페이지에서 인코딩 및 필터링되지 않은 상태로 렌더링될 때 발생합니다. 영구형은 악성 코드가 포함된 요청 데이터를 서버에 저장합니다. 웹 애플리케이션. 사용자가 특정 페이지를 방문할 때마다 악성 코드가 자동으로 실행됩니다. 특히 Web2.0 유형의 소셜 네트워킹 사이트에서는 이러한 공격이 흔하며 위협도 더 큽니다. 크로스 사이트 스크립팅을 처리하는 방법에는 크게 두 가지가 있습니다. 첫째, 사용자 입력을 신뢰하지 않고 화이트리스트 기술을 사용하여 입력 매개변수를 확인하는 것입니다. 둘째, 출력 시 사용자가 제공한 콘텐츠를 이스케이프 처리합니다.

그러나 세 번째 유형의 크로스 사이트 스크립팅 취약점이 있다는 사실은 알려진 바가 거의 없습니다. 2005년에 Amit Klein은 DOM 기반 교차 사이트 스크립팅을 공개한 "DOM 기반 교차 사이트 스크립팅 또는 제3종 XSS"("DOM 기반 교차 사이트 스크립팅 또는 제3종 XSS") 백서를 출판했습니다. 일부 HTML 페이지가 document.location, document.URL 또는 document.referer와 같은 DOM 요소의 속성을 사용하는 경우 공격자는 이러한 속성을 사용하여 악성 스크립트를 삽입하여 DOM을 구현할 수 있습니다. 기반 상호 참조 공격.

아래에서는 매우 간단한 HTML 페이지를 통해 DOM 기반 크로스 사이트 스크립팅의 원리를 보여줍니다. 사용자의 성공적인 로그인을 환영하는 메시지를 표시하는 정적 HTML 페이지(목록 1 참조)가 있다고 가정합니다.

목록 1. DOM 기반 XSS를 사용한 HTML 코드

<HTML>
<TITLE>Welcome!</TITLE>
Hi
<SCRIPT>
 var pos=document.URL.indexOf("name=")+5;
 document.write(document.URL.substring(pos,document.URL.length));
</SCRIPT>
<BR>
Welcome to our system
…
</HTML>
로그인 후 복사

按照该页面 JavaScript 代码逻辑,它会接受 URL 中传入的 name 参数并展示欢迎信息,如清单 2 所示:

清单 2. 正常情况下的访问 URL

http://www.vulnerable.site/welcome.html?name=Jeremy

但如果恶意攻击者输入类似如下的脚本,见清单 3,该页面则会执行被注入的 JavaScript 脚本。

清单 3. 访问 URL 中注入脚本

http://www.vulnerable.site/welcome.html?name=

인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿