AJAX 보안

AJAX (Asynchronous Javascript and XML)는 풍부한 사용자 경험을 제공하기 위해 웹 애플리케이션을 개발하는 데 사용되는 최신 기술 중 하나입니다. 신기술이기 때문에 아직 완성되지 않은 보안 문제가 많이 있으며 아래는 AJAX의 몇 가지 보안 문제입니다.

  • 보안해야 할 입력이 많을수록 공격 표면이 더 커집니다.

  • 또한 응용 프로그램의 내부 기능을 노출합니다.

  • 인증 정보 및 세션을 보호하지 못했습니다.

  • 클라이언트 측과 서버 측 사이에는 매우 좁은 경계가 있으므로 보안 실수를 저지를 가능성이 있습니다.

다음은 AJAX 보안의 예입니다.

2006 년에 웜은 Yahoo Mail의 온로드 이벤트 처리 취약점을 이용하여 XSS 및 AJAX를 사용하여 yahoo 메일 서비스를 감염 시켰습니다. 감염된 이메일이 열리면 웜은 JavaScript를 실행하여 감염된 사용자의 모든 Yahoo 연락처에 복사본을 보냅니다.

손에

Step 1− XML 주입을 사용하여 허용 된 보상 세트에 더 많은 보상을 추가해야합니다. 아래는 시나리오의 스냅 샷입니다.

Step 2− Burp Suite를 사용하여 요청과 응답을 모두 가로채는 지 확인하십시오. 아래와 같은 설정.

Step 3− 시나리오에 제공된 계정 번호를 입력합니다. 우리가받을 수있는 모든 보상 목록을 얻을 수 있습니다. 5 개 중 3 개를받을 수 있습니다.

Step 4− 이제 '제출'을 클릭하고 응답 XML에서 얻은 내용을 살펴 보겠습니다. 아래에서 볼 수 있듯이 우리가받을 수있는 세 가지 보상은 XML로 우리에게 전달됩니다.

Step 5 − 이제 해당 XML을 편집하고 다른 두 가지 보상도 추가하겠습니다.

Step 6-이제 모든 보상이 사용자가 선택할 수 있도록 표시됩니다. 추가 한 항목을 선택하고 '제출'을 클릭합니다.

Step 7 − "* 축하합니다.이 레슨을 성공적으로 완료했습니다."라는 다음 메시지가 나타납니다.

예방 메커니즘

클라이언트 측-

  • .innerHtml 대신 .innerText를 사용하십시오.
  • eval을 사용하지 마십시오.
  • 보안을 위해 클라이언트 로직에 의존하지 마십시오.
  • 직렬화 코드를 작성하지 마십시오.
  • XML을 동적으로 작성하지 마십시오.
  • 클라이언트에게 비밀을 전송하지 마십시오.
  • 클라이언트 측 코드에서 암호화를 수행하지 마십시오.
  • 클라이언트 측에서 보안 영향 논리를 수행하지 마십시오.

서버 측-

  • CSRF 보호를 사용하십시오.
  • 직렬화 코드를 작성하지 마십시오.
  • 서비스는 사용자가 직접 호출 할 수 있습니다.
  • XML을 직접 작성하지 말고 프레임 워크를 사용하십시오.
  • JSON을 직접 빌드하지 말고 기존 프레임 워크를 사용하세요.