2013-09-26 30 views
6

Với công nghệ cycript, tất cả ứng dụng iOS có thể gỡ lỗi và có thể truy cập các biến và phương thức bên trong ứng dụng.Ứng dụng iOS an toàn với cycript

Và cũng có thể ghi đè các biến và phương pháp thời gian chạy.

Có cách nào để bảo mật ứng dụng truy cập vào các trường hợp đó để tránh tin tặc truy cập các giá trị bảo mật cao không?

Trả lời

1

Với công nghệ cycript, tất cả ứng dụng iOS đều có thể gỡ lỗi và có thể truy cập các biến và phương thức bên trong ứng dụng. Và cũng có thể ghi đè các biến và phương thức thời gian chạy.

YESCycript (dễ dàng)/mobilesubstrate (trung gian)/GDB dành cho iOS (nâng cao hơn) cho phép bạn thay đổi môi trường runtime (tức là phương pháp/đối tượng/i.variables) và làm nhiều hơn nữa.

Có cách nào để bảo mật ứng dụng truy cập vào các trường hợp đó để tránh tin tặc truy cập vào các giá trị bảo mật cao không?

Không có cách an toàn 100%. Như ai đó đã nói một lần bạn không thể dừng mọi hacker, nhưng bạn có thể làm chậm và không khuyến khích hầu hết trong số họ. Sau đó, nếu bạn bảo vệ ứng dụng của mình chống lại một số loại tấn công, ứng dụng của bạn sẽ tồn tại lâu hơn một chút mà không bị tấn công.

Đối với phát triển iOS, có một điều cần nhớ: Objective-C (và Swift) làm cho nó thực sự dễ dàng cho tin tặc để thao tác runtime và làm phân tích tĩnh. Tóm lại: điều này là do cách thức mà các ngôn ngữ này được biên dịch và tổ chức trong hệ nhị phân.

Vì đó là do ngôn ngữ, bạn có thể sử dụng các ngôn ngữ khác để tránh điều này! Đó là lý do tại sao nên sử dụng các ngôn ngữ khác như C/C++ thay vì Objective-C/Swift cho mã liên quan đến bảo mật xử lý thông tin nhạy cảm. Ví dụ, Cycript không thể truy cập mã C/C++ và do đó không thể sửa đổi môi trường được mã hóa bằng các ngôn ngữ đó.

Thực tế, nếu bạn sử dụng các công cụ đa nền tảng để phát triển các ứng dụng của bạn (như Cocos2d, Unity, ...) bạn có thể được bảo vệ chống lại các cuộc tấn công debugger dựa trên đó (như Cycript, GDB) vì hầu hết các công cụ dev đa nền tảng này chỉ sử dụng Objective-C/Swift cho các bước đầu tiên khi ứng dụng khởi chạy, và chúng biên dịch logic ứng dụng của bạn bằng bất kỳ ngôn ngữ nào bạn phát triển (ví dụ: C++ cho Cocos2d và Unity).

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