HomeOur Team
Bảo mật ứng dụng di động?
Articles
Bảo mật ứng dụng di động?
binh.tran
binh.tran
September 22, 2020
7 min

Tổng quan

Thời đại công nghệ 4.0 smartphone và tablet chiếm 1 vị thế quan trọng trong đời sống hàng ngày của mỗi người (2.7 tỷ người dùng smartphone và 1.35 tỷ máy tính bảng. Đi kèm các thiết bị phần cứng ngày càng phát triển là số lượng ứng dụng cũng ngày càng gia tăng không ngừng (2.6 triệu ứng dụng khả dụng trên Google Play).

Tương ứng với số lượng người dùng lớn như vậy thì lượng thông tin cá nhân không hề nhỏ.

Điều này cho thấy mức độ hiệu quả của ứng dụng dành cho các thiết bị di động đối với một cá nhân hay doanh nghiệp. Quá trình phát triển ứng dụng thường bắt đầu với một ý tưởng sáng tạo và một nguồn cảm ứng. Tiếp đó sau rất nhiều kế hoạch, thiết kế và coding cũng như phát hành sản phẩm. Trong suốt quá trình này, yếu tố bảo mật thường xuyên bị bỏ qua.

Theo quan sát, hơn một nửa số doanh nghiệp phát triển ứng dụng di động không có ngân sách riêng cho các giải pháp bảo mật di động doanh nghiệp. Điều này là do họ không biết về hàng ngàn ứng dụng đang bị tin tặc nhắm mục tiêu hàng ngày và rất nhiều dữ liệu cá nhân của người dùng liên tục bị đánh cắp.

Sau sự cố Cambridge Analytica gần đây, nơi dữ liệu của hơn 87 triệu tài khoản người dùng Facebook bị rò rỉ và được sử dụng để gây chấn động dư luận, thế giới đã thức tỉnh với một cú sốc khắc nghiệt và bắt đầu coi trọng vấn đề bảo mật ứng dụng di động hơn nhiều.

Vì vậy, với phần lớn người dùng điện thoại thông minh luôn cảnh giác cao độ về bảo mật dữ liệu, bất kỳ doanh nghiệp nào cũng không thể để ứng dụng của mình ra mắt mà không đảm bảo mức độ bảo mật dữ liệu tối ưu của ứng dụng.

Các chuyên gia phát triển di động nói rằng mỗi ứng dụng thành công mà họ phân tích đều có ít nhất 2 rủi ro bảo mật. Để tránh điều này xảy ra với ứng dụng của bạn, người ta cần hiểu ý định của tin tặc khi xâm nhập vào ứng dụng của bạn.

Hackers có thể làm gì khi thông qua một ứng dụng bị xâm phạm bảo mật ?

  • Đưa phần mềm độc hại vào thiết bị thông qua ứng dụng và lấy cắp dữ liệu và mật khẩu riêng tư.
  • Có được quyền truy cập vào chi tiết thẻ ghi nợ / tín dụng mà người dùng đã sử dụng để mua hàng trên ứng dụng.
  • Đánh cắp dữ liệu người dùng cho mục đích đánh cắp danh tính hoặc gian lận.
  • Đăng nhập vào tài khoản email cá nhân của người dùng để thực hiện hành vi gian lận ẩn danh.
  • Truy cập tài sản trí tuệ của doanh nghiệp tư nhân hoặc tài sản trí tuệ và sử dụng nó cho lợi ích cá nhân. …

Tất cả những ý định này của tin tặc đều gây ra những mối đe dọa lớn cho người dùng ứng dụng và nếu một ứng dụng không cung cấp bảo mật chống lại những mối đe dọa này, ứng dụng đó chắc chắn sẽ mất người dùng.

Vậy làm thế nào để gia tăng bảo mật ứng dụng cũng như lượng thông tin dữ liệu của ứng dụng thì chúng ta sẽ cùng tìm hiểu nhé,

Trong khuân khổ bài viết này mình sẽ chỉ nói khái quát về các phương pháp tăng cường bảo mật khi phát triển ứng dụng di động. Còn chi tiết như thế nào cũng như các kỹ thuật cụ thể hơn mình xin đề cập trong bài viết sau nha.

1. Bảo mật mã nguồn

Không có ý nghĩa gì khi tạo ra một ứng dụng mạng mẽ, với phương pháp làm hay nhất nhưng sau đó lại để mã nguồn đó cho bất kỳ ai cũng xem và sử dụng được. Nó giống như bạn xây một kho chứa vàng nhưng lại để của mở ai cũng vào lấy được =))) Trong một ứng dụng di động thông thường, hầu hết mã nguồn nằm ở phía client, bao gồm giao diện người dùng và logic nghiệp vụ, điều này có nguy cơ đe dọa nếu kẻ tấn công có thể truy cập mã nguồn này.

Obfuscation là quá trình làm cho cơ sở code của bạn trở nên không rõ ràng và khó hiểu, để ngăn những kẻ tấn công hiểu hoặc thiết kế ngược nó. Nó thay đổi tên lớp, phương thức, thuộc tính của bạn thành các chữ cái hoặc ký tự vô nghĩa, làm cho code không thể hiểu được.

Bạn có thể dễ dàng xáo trộn code của mình với Pro-Guard tích hợp của Android và có nhiều phần mềm khác mà bạn có thể sử dụng, cho Android hoặc IOS.

2. Bảo mật các tệp tin và cơ sở dữ liệu

Bảo mật source code là chưa đủ, bạn cần bảo mật thêm cả dữ liệu. Trong một số ứng dụng bạn cần lưu trữ dữ liệu trên thiết bị vì bất kỳ lý do nào đó, dữ liệu này có thể bao gồm thông tin quan trọng như thông tin đăng nhập người dùng hoặc thông tin thanh toán, vì lý do đó, bạn phải luôn đảm bảo rằng dữ liệu bạn đang lưu trữ trên thiết bị người dùng phải được mã hóa và ngăn chặn sự rò rỉ của nó.

Như trên các thiết bị Android nên hạn chế lưu trữ dữ liệu lên bộ nhớ ngoài. Các dữ liệu lưu trữ thành file hay trong database nên có cơ chế mã hóa riêng.

3. Bảo mật phương thức kết nối

An ninh mạng trong phát triển di động không phải là tầm thường như đối với phát triển web, và nhiều công ty và nhà phát triển không chọn bảo mật mạng trong quá trình phát triển của họ. Chỉ bảo mật dữ liệu trên các điểm tạo và lưu trữ là không đủ.

Dữ liệu ứng dụng cũng phải được bảo mật khi chuyển tiếp, có nghĩa là việc gửi và nhận dữ liệu bên trong ứng dụng phải thông qua phương tiện bảo mật. Các phương thức thường hay sử dụng như VPN tunnel, giao tiếp SSL, TLS hoặc HTTPS. Bằng cách này, nếu có ai đó nghe trộm được các yêu cầu mạng của bạn, họ sẽ không thể giải mã dữ liệu và bảo mật sẽ được đảm bảo.

Nếu không, các cuộc tấn công như packet-sniffingman-in-the-middle sẽ rất nghiêm trọng là mối đe dọa với ứng dụng(Tham khảo)

4. Xem xét khả năng di chuyển dữ liệu

Tính khả chuyển của dữ liệu là sử dụng dữ liệu người dùng trên các nền tảng và dịch vụ khác nhau. Như sử dụng tài khoản Facebook của bạn để đăng nhập các nền tảng khác như StackOverflow hoặc GitHub. Điều này cho phép tận dụng tính bảo mật của các công ty lớn hơn và sử dụng nó cho phía bạn, bên trong việc triển khai tất cả xác thực và dữ liệu cá nhân của người dùng từ đầu, nó cũng giúp người dùng dễ dàng hơn khi nhiều người cảm thấy hợp lý khi sử dụng hơn là tạo tài khoản mới.

Một giao thức phổ biến cho đó là OAUTH.

Quy trình đơn giản của OAuth cho phép bạn truy cập vào các tài nguyên được bảo vệ được hiểu là dữ liệu người dùng ở đầu bên kia bằng cách chỉ lưu trữ mã thông báo truy cập, giúp bạn tiết kiệm được sự phức tạp khi thu thập và bảo vệ dữ liệu đó.

5. Dấu hiệu cho kỹ thuật đảo ngược

Điều này có thể cụ thể hơn đối với các ứng dụng Android vì Android là nền tảng mã nguồn mở, có nghĩa là bất kỳ ai cũng có thể tra cứu mã nguồn, thực hiện sửa đổi trên hệ điều hành theo bất kỳ cách nào họ muốn. Vì lý do này, bạn sẽ cần hiểu biết về môi trường Android dựa trên Java cũng như nhân hệ điều hành Linux để hiểu quy trình và hiểu cách bạn có thể bảo vệ ứng dụng của mình khỏi thiết kế ngược.

6. Thực hiện xác thực đầu vào

Xác thực đầu vào là một trong những phương pháp quan trọng nhất để lấy thông tin đầu vào của người dùng, nhưng nó thường bị bỏ qua trong quá trình phát triển vì lợi ích của “tốc độ”.

Xác thực đầu vào cho phép bạn kiểm tra dữ liệu do người dùng cung cấp để ngăn chặn dữ liệu không đúng định dạng. Xác thực đầu vào rất phổ biến trong hầu hết các khuôn khổ, cả trên web và phát triển di động và bạn nên tận dụng nó.

7. Sử dụng mật mã một cách khôn ngoan

Mã hóa dữ liệu của bạn hoặc băm mật khẩu không nhất thiết chỉ ra rằng ứng dụng của bạn an toàn. Trên thực tế, mật mã bị hỏng là mối đe dọa phổ biến nhất đối với các ứng dụng di động. Bạn nên tránh các thuật toán yếu hoặc bị hỏng và đảm bảo rằng chương trình của bạn không sử dụng chúng. Các thuật toán này bao gồm MD5, MD4, SHA1, BLOWFISH, RC2RC4. Mật mã là một yếu tố bảo mật mạnh mẽ trong một ứng dụng di động và do đó, nếu được sử dụng đúng cách, nó có thể bảo vệ ứng dụng và dữ liệu của bạn.

8. Thực hiện kiểm tra thâm nhập

Binh pháp Tôn Tử dạy “Tri kỷ tri bỉ bách chiến bách thắng”, tức là, “Biết ta biết người trăm trận trăm thắng” Đúng vậy nếu chúng ta nắm được cách các hacker tấn công như thế nào từ đó triển khai các phòng chống phù hợp.

Kiểm tra thâm nhập là một trong những giai đoạn quan trọng nhất của việc bảo mật một ứng dụng vì nó có thể quét một loạt các lỗ hổng. Nó mô phỏng những gì kẻ tấn công có thể làm trong các môi trường và phương thức hoạt động khác nhau. Rất nhiều người nhầm lẫn giữa kiểm thử phần mềm thông thường với kiểm thử thâm nhập, nhưng chúng thực sự khác nhau và phục vụ các mục đích khác nhau, nhưng bạn cần phải làm cả hai.

Tổng kết:

Bảo mật là mối quan tâm của tất cả mọi người, đúng là hầu hết người dùng sẽ không quan tâm đến các quyền được cấp bởi ứng dụng họ đang sử dụng và họ không thể biết ứng dụng có an toàn hay không. Nhưng nếu rò rỉ xảy ra, bạn sẽ phải chịu trách nhiệm với tư cách là nhà phát triển. Một ứng dụng tốt là một ứng dụng vừa đảm bảo hiệu năng hoàn hảo và bảo mật cao.

Vậy làm thế nào để xây dựng một ứng dụng Android bảo mật cao, các kỹ thuật bảo mật trên Android như thế nào thì xin hẹn các bạn trong loạt bài viết tiếp theo nha =)))

Cảm ơn mọi người đã theo dõi bài viết !

Have a nice day

Tham khảo:

https://source.android.com/security/overview/app-security https://github.com/OWASP/owasp-mstg/blob/master/Document/0x04f-Testing-Network-Communication.md https://code.tutsplus.com/articles/how-to-secure-an-android-app—cms-26385 https://hackr.io/


Tags

#mobile development#092020#security
binh.tran

binh.tran

Developer

Related Posts

Imperative và Declarative trong Swift
Imperative và Declarative trong Swift
September 28, 2020
2 min
© 2021, All Rights Reserved.

Quick Links

HomeOur Team

Social Media