2013-02-28 4 views
5

AJAX를 사용하여 웹/모바일 앱을 작성 중입니다. 응용 프로그램에는 4 페이지가 있습니다. 로그인 1과 3 보호 페이지는 로그인 한 사용자에게만 표시됩니다.AJAX : 단일 페이지 응용 프로그램 구조/보안

단일 페이지 응용 프로그램 패턴을 사용하려고합니다. 따라서 4 페이지 모두가 즉시로드되고 각 페이지는 고유 한 DIV ID 내에 포함되며 로그인 정보 만 처음에 표시됩니다.

일단 사용자가 사용자/패스를 입력하면 XMLHttpRequest를 만들고 내부 PHP 스크립트와 통신하며, 준비된 명령문을 사용하여 데이터베이스에 사용자/패스가 있는지 확인하고 true 또는 false를 반환합니다. XMLHttpRequest.

그렇다면 보호 된 DIV를 표시하고 서버에서 필요한 데이터를로드하여 다른 XMLHttpRequest를 만들고 다른 PHP 스크립트를 통해 데이터베이스와 인터페이스합니다. 이 단계는 사용자가 다른 보호 된 페이지 사이를 이동할 때 반복됩니다. 또한 XMLHttpRequest/내부 PHP 스크립트를 사용하여 사용자를 계속 로그인하는 쿠키를 구현할 계획입니다.

아래에는 프로세스를 설명하는 이미지가 있습니다.

질문 :

  • 이 구조 확인을 보입니까? 발생할 수있는 문제가 있습니까?
  • 구조가 안전합니까? 내가 더 강하게 할 수있는 어떤 방법이라도? 인증되지 않은 사용자에게 데이터를 제공하는 것을 방지하기 위해, 데이터에 대한 각 요청은 로그인 시스템에 의해 보호되어 있는지 확인으로

enter image description here

+0

JPEG는 다이어그램을 저장하는 데 가장 적합한 형식이 아닙니다. BTW, HTTPS를 사용하고 있습니까? 그렇습니까? –

+0

예 PHP 서버 측 스크립트에서 HTTPS를 사용하고 있습니다. –

답변

4

그 구조는 한 괜찮습니다.

또한 사용자가 로그 아웃 할 때 모든 데이터가 DOM 밖으로 플러시되는지 확인해야합니다. 이는 페이지 새로 고침을 강제로 수행하여 수행 할 수 있습니다. window.location.reload() 또는 데이터가 포함 된 모든 DOM 노드를 수동으로 제거하고 변수를 덮어 쓰면됩니다. 앱을 사용하고 로그 아웃 한 다음 다른 사용자가 동일한 기기를 사용하게되는 사용자를 생각해보십시오. 로그 아웃 할 때 데이터를 플러시하지 않으면 인증되지 않은 두 번째 사용자가 Firebug/Chrome Dev Tools와 같은 DOM 도구를 열고 마지막 사용자의 중요한 데이터를 볼 수 있습니다.

SQLi, XSS (DOM 기반 XSS 포함 - 반영/저장 XSS 제외) 및 세션 보안 (세션 도용 등)과 관련하여 일반적인 웹 앱 보안에주의를 기울여야합니다.

+0

SQLi와 XSS에주의를 기울이고 있지만 DOM과 DOM 기반의 XXS에서 데이터를 플러시하는 것을 잊어 버렸습니다. 좋은 알림, 감사합니다. –

관련 문제