- vừa được xem lúc

Giới thiệu một số cách tăng tính bảo mật cho Android App

0 0 4

Người đăng: Nguyễn Hữu Nam

Theo Viblo Asia

Chúc mừng năm mới Quý Mão 2023!

Đầu xuân năm mới, chúc toàn thể anh em Viblo có một năm năm mới tràn đầy sức khỏe, hạnh phúc, và thật là bùng nổ. Dưới đây là một số cách để giúp các bạn tăng tính bảo mật cho App của mình.

Một số cách tăng tính bảo mật cho Android App

1. Sử dụng Proguard

ProGuard là công cụ tích hợp sẵn trong Android Studio, với các tính năng giúp cho mã nguồn ứng dụng của bạn thu gọn lại (để dễ phân phối), làm rối (đổi tên các lớp, hàm, biến,.. trở nên khó đọc để chống dịch ngược), cuối cùng là nó tối ưu để ứng dụng chạy nhanh hơn. Nên sử dụng ProGuard trong cả môi trường đang phát triển (debug, staging) lẫn sản phẩm phát hành (release), nếu chỉ sử dụng ở sản phẩm phát hành mà bỏ qua sử dụng nó khi chạy trong môi trường đang phát triển có thể khiến ứng dụng bị crash không mong muốn khi phát hành...

Để cấu hình, ta thêm đoạn code sau vào file build.gradle

android { buildTypes { // Các môi trường cấu hình proguard getByName("release") { // Cho phép thu nhỏ mã, làm xáo trộn mã và tối ưu hóa isMinifyEnabled = true // Cho phép thu nhỏ tài nguyên, được thực hiện bởi plugin Android Gradle. isShrinkResources = true // Bao gồm các tệp quy tắc ProGuard mặc định được đóng gói cùng với plugin Android Gradle. proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") } } ...
}

Trong đoạn cấu hình sử dụng ProGuard ở trên, file proguard-rules.pro là file cấu hình thêm về cách thức hoạt động cho ProGuard

Khi ProGuard làm rối code, nó đổi tên các class, nhiều class tham khảo từ bên thứ 3 cũng bị chuyển đổi, nên có thể dẫn tới lỗi và crash. Trong trường hợp muốn không làm rối một lớp nào đó bạn dùng cấu hình keep, ví dụ trong file: proguard-rules.pro ta thêm

-keep class com.myapp.entity.** { *; }

Với mã trên, sẽ giữ lại các lớp, phương thức trong folder com.myapp.entity

Một số nguồn tham khảo thêm: https://developer.android.com/studio/build/shrink-code?hl=vi, https://www.guardsquare.com/, https://viblo.asia/p/tim-hieu-ve-proguard-trong-android-924lJ30N5PM, https://gist.github.com/albinmathew/c4436f8371c9c41461ab

2. Chặn các thiết bị đã root

Việc root máy giúp ta làm chủ và có thể cài đặt thiết bị theo ý muốn của mình, nhưng bên cạnh đó có thể làm khả năng bảo mật thông tin của bạn bị ảnh hưởng. App của chúng ta có thể bị tấn công và đánh cắp thông tin. Vậy ta nên chặn các thiết bị đã root sử dụng App để đảm bảo an toàn (nếu cần thiết).

Có rất nhiều cách giúp chúng ta kiểm tra xem thiết bị đã root hay chưa, nhưng cách nhanh nhất và cũng tương đối chính xác là sử dụng thư viện rootbear (https://github.com/scottyab/rootbeer) để phát hiện. Ngoài ra nếu muốn ta cũng có thể tự viết để tối ưu hơn.

Cách sử dụng cũng rất đơn giản như sau:

RootBeer rootBeer = new RootBeer(context);
if (rootBeer.isRooted()) { //we found indication of root
} else { //we didn't find indication of root
}

3. Chặn chụp ảnh màn hình khi dùng App

Để giảm thiểu việc hình ảnh trong khi sử dụng app bị chụp lại, photoshop, sau đó sử dụng cho các mục đích xấu như lừa đảo,... Ta nên ngăn không cho người dùng chụp ảnh màn hình ở một số màn cần bảo mật, hoặc cả App.

Để sử dụng ta setFlag FLAG_SECURE cho window

window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE
)

Tham khảo: https://developer.android.com/reference/android/view/WindowManager.LayoutParams

Kết

Trên đây là một số cách để tăng tính bảo mật khi ta phát triển App trên android. Các bạn cũng có thể áp dụng các cách này với các thư viện, các hàm khác nhau cho phù hợp với từng framework(nếu có). Cảm ơn các bạn đã theo dõi.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một số thủ thuật hay ho với Linux (1).

1. Ctrl + x + e. Giữ CTRL, nhấn phím x rồi nhấn phím e. Thao tác này sẽ mở ra editor mặc định (echo $EDITOR | $VISUAL để kiểm tra) chứa sẵn.

0 0 35

- vừa được xem lúc

How to deploy Amplication app to DigitalOcean

This article shows you the way to deploy an app generated by Amplication to DigitalOcean. Amplication provides the dockerfile to use containers for deployment, but this blog explains how to do it manu

0 0 39

- vừa được xem lúc

Có gì mới trong Laravel 9.0?

Laravel v9 là phiên bản LTS tiếp theo của Laravel và ra mắt vào tháng 2 năm 2022. Trong bài viết này, mình xin giới thiệu một vài tính năng mới trong Laravel trong Laravel 9.

0 0 66

- vừa được xem lúc

Xây dựng trang web tra cứu ảnh sử dụng phân cụm Spectral Clustering

1. Tổng quan tra cứu ảnh. 1.1.

0 0 33

- vừa được xem lúc

Scanning network 1 - quét mạng như một hacker

Chào mọi người mình là Tuntun. Một năm qua là một năm khá bận rộn nhỉ.

0 0 34

- vừa được xem lúc

Interpreter Design Pattern - Trợ thủ đắc lực của Developers

1. Giới thiệu. . Interpreter là một mẫu thiết kế thuộc nhóm hành vi (Behavioral Pattern).

0 0 33