2013-02-28 36 views
5

Tôi đang làm việc trên một ứng dụng web/di động bằng AJAX. Ứng dụng này có 4 trang: đăng nhập một và 3 trang được bảo vệ chỉ hiển thị cho người dùng đã đăng nhập.AJAX: Cấu trúc ứng dụng trang đơn/bảo mật

Tôi định sử dụng mẫu Đơn đăng ký một trang, vì vậy tất cả 4 trang sẽ được tải ngay, mỗi trang bên trong mã DIV riêng của nó và chỉ một lần đăng nhập sẽ hiển thị ban đầu.

Khi người dùng nhập người dùng/pass của mình, tôi tạo XMLHttpRequest và giao tiếp với một tập lệnh PHP nội bộ, lần lượt sử dụng câu lệnh chuẩn bị để kiểm tra xem người dùng/pass có tồn tại trong cơ sở dữ liệu hay không XMLHttpRequest.

Nếu kết quả là đúng thì tôi sẽ hiển thị DIV được bảo vệ và tải dữ liệu cần thiết từ máy chủ, tạo XMLHttpRequest khác và thực hiện một tập lệnh PHP khác để giao tiếp với cơ sở dữ liệu. Bước này được lặp lại khi người dùng điều hướng giữa các trang được bảo vệ khác. Tôi cũng đang lên kế hoạch triển khai cookie để giữ cho người dùng đăng nhập, lại sử dụng XMLHttpRequest/script PHP nội bộ.

Dưới đây là hình ảnh mô tả quy trình.

Câu hỏi:

  • Liệu cấu trúc này trông OK? Bất kỳ vấn đề có thể phát sinh tôi không thấy trước?
  • Cấu trúc có an toàn không? Bất kỳ cách nào tôi có thể làm vững chắc hơn nữa?

enter image description here

+0

JPEG không phải là định dạng phù hợp nhất để lưu sơ đồ như vậy. BTW, bạn đang sử dụng HTTPS phải không? –

+0

Có Tôi đang sử dụng HTTPS trên các kịch bản lệnh phía máy chủ PHP. –

Trả lời

4

cấu trúc đó là tốt miễn là bạn đảm bảo rằng mỗi yêu cầu đối với dữ liệu được bảo vệ bởi hệ thống đăng nhập, để ngăn chặn phục vụ dữ liệu cho người dùng không được thẩm định.

Ngoài ra, bạn cần đảm bảo rằng khi người dùng đăng xuất, bạn xóa tất cả dữ liệu ra khỏi DOM. Điều này có thể dễ dàng được thực hiện bằng cách buộc làm mới trang window.location.reload() hoặc bằng cách xóa thủ công tất cả các nút DOM chứa dữ liệu và ghi đè bất kỳ biến nào. Cân nhắc người dùng sử dụng ứng dụng của bạn, sau đó đăng xuất, sau đó một người dùng khác sử dụng cùng một thiết bị. Nếu bạn không xóa dữ liệu khi đăng xuất, người dùng thứ hai trong khi chưa được xác thực có thể mở bất kỳ công cụ DOM nào như Firebug/Chrome Dev Tools và xem dữ liệu nhạy cảm của người dùng cuối cùng.

Đừng quên chú ý đến bảo mật ứng dụng web chung về SQLi, XSS (bao gồm XSS dựa trên DOM - không chỉ phản chiếu/lưu trữ XSS) và bảo mật phiên (phiên chiếm đoạt v.v.).

+0

Tôi đang chú ý đến SQLi và XSS, nhưng tôi quên mất dữ liệu xóa khỏi DOM và DOM dựa trên DOM. Lời nhắc tốt, cảm ơn. –

Các vấn đề liên quan