2013-07-28 40 views
7

Trên phần cuối cùng trên Platform Security, nó đề cập đến cách bảo mật mã nguồn trong ứng dụng PhoneGap.Bảo mật nguồn PhoneGap

Kỹ thuật đảo ngược là mối quan tâm của nhiều người sử dụng PhoneGap vì người ta chỉ có thể mở một ứng dụng nhị phân và xem mã nguồn JavaScript của ứng dụng. Thậm chí có thể đi xa hơn để thêm mã JavaScript độc hại, đóng gói lại ứng dụng và gửi lại ứng dụng cho các cửa hàng/thị trường ứng dụng trong nỗ lực lừa đảo ứng dụng. Thực hành này có thể được thực hiện với bất kỳ ứng dụng nào dù nó được viết bằng PhoneGap hay không vì nó là một nhiệm vụ đơn giản tương tự để dịch ngược Java hoặc Objective-C.

PhoneGap thực sự có thể giải quyết vấn đề bảo mật này vì nhà phát triển ứng dụng có thể tải xuống JavaScript trong ứng dụng của họ khi chạy, chạy JavaScript và xóa nó khi ứng dụng đóng. Theo cách đó, mã nguồn không bao giờ trên thiết bị khi thiết bị đang ở trạng thái nghỉ. Đây là một viễn cảnh khó khăn hơn nhiều với Java hoặc Objective-C cho phép một mình các hạn chế trong App Store xung quanh mã động Objective-C.

Tuy nhiên, tôi muốn biết làm cách nào để ngăn người khác tải xuống mã nguồn của mình trên máy chủ?

+1

Câu hỏi này là về làm xáo trộn các ứng dụng JavaScript, chứ không phải đặc biệt là phonegap. –

+0

Tôi cũng quan tâm đến câu trả lời cho câu hỏi này cũng như – Paul

+0

@ChristianKuetbach: Tôi không hỏi về mã JS làm xáo trộn. Tôi thực sự quan tâm đến cách PhoneGap có thể bảo mật mã của tôi bằng cách tải xuống mã JS của tôi khi chạy. Tôi muốn biết cách nhận ra phương pháp này. – cwlaualex

Trả lời

2

Tôi muốn đề xuất chú thích mã của bạn và sau đó chạy mã thông qua Google Closure Compiler của Google, sẽ làm xáo trộn mã và thực hiện tối ưu hóa nhất định. Điều này sẽ khiến mọi người rất khó đọc mã của bạn, nhưng ngoài ra bạn sẽ phải sống với thực tế là JS là ngôn ngữ phía khách hàng.

+0

Tôi đã thử Trình biên dịch đóng cửa nhưng tôi không thể hiểu ý nghĩa của bạn về việc ghi chú mã. Tôi hiểu bản chất của JS và kịch bản là không có cách nào để ẩn khỏi người dùng. Tôi chỉ quan tâm đến việc hiểu thêm về phương pháp được cung cấp trong tài liệu. Nó thực sự không phải là một giải pháp ở tất cả hay tôi đã bỏ lỡ một cái gì đó? – cwlaualex

+0

Tôi chưa bao giờ sử dụng PhoneGap, nhưng tôi tưởng tượng rằng có một số chức năng và tên khác trong mã mà bạn không thể có được bằng cách đóng, vì vậy ở mức tối thiểu bạn cần chú thích những thứ đó để trình biên dịch không gây rối với họ. Tuy nhiên, [câu trả lời cho câu hỏi này] (http://stackoverflow.com/questions/13260480/using-closure-library-on-phonegapandroid-application) và [chủ đề này] (https://groups.google.com/ forum/#! msg/closure-library-discussion/s05FrsCuvK0/yQg4BvJNmTwJ) có thể hữu ích hơn bạn. – Troy

1

Làm thế nào về mô hình sau:

  1. Nhúng JavaScript bootstrap với ứng dụng của bạn mà không cho phép người dùng/thiết bị xác thực chống lại máy chủ của bạn. Làm những gì bạn có thể để làm xáo trộn mã khởi động.
  2. Giữ logic chính của ứng dụng của bạn như JavaScripton trên máy chủ của bạn (có thể được truy cập bởi người dùng xác thực)
  3. Sau khi thẩm định, tiến hành download logic chính JavaScript trong thời gian chạy, chạy JavaScript, và xóa nó khi ứng dụng đóng

Việc nâng cấp liên tục không gây đau đớn.

1

tôi sẽ đề nghị:

  • xáo trộn nhất/tất cả các mã JS. Trình biên dịch Closure của Google là lựa chọn tốt.

Khi Ứng dụng được bắt đầu:

  • Có một số hashcode được lưu trữ trên thiết bị mà cần phải được xác nhận trước khi thực hiện cuộc gọi đến máy chủ cho dữ liệu động lấy
  • Trong App khởi động, đầu tiên đẩy Mã băm ứng dụng tới máy chủ để xác minh tính xác thực của ứng dụng và Máy chủ sẽ kiểm tra mã băm đó để xác minh tính hợp pháp của ứng dụng
  • Khi máy chủ đã xác minh ứng dụng tính hợp pháp sau đó, Máy chủ có thể gửi một mã băm khác hoặc tiếp tục sử dụng cùng một mã băm. Cộng với máy chủ có thể thiết lập các thông số cookie tùy chỉnh quá ... tất cả phụ thuộc vào kiến ​​trúc của giao tiếp Máy chủ ứng dụng &.Sau khi thiết lập tính hợp pháp của ứng dụng đã được xác minh thì tất cả các cuộc gọi từ thiết bị đến máy chủ phải chứa cùng một hashcode hoặc cookie và máy chủ sẽ xác minh nó trước khi trả lời cuộc gọi.

Thay vì sau đó gửi mã js mới, tốt hơn là đẩy dữ liệu động json và giữ mã js bị làm xáo trộn trên thiết bị.