Trường hợp sửdụng phổ biến nhất là lưu các phần dữ liệu có liên quan vào bộ nhớ đệm.Bằng cách này, khi thiết bị không thể truy cập mạng, người dùng vẫnduyệt qua được nội dung đó dù không
Lý Thuyết
Công Nghệ App
Android Studio là môi trường phát triển tích hợp (IDE) dành cho Android Android Studio được xây dựng trên phần mềm IntelliJ IDEA của JetBrains và được thiết kế đặc biệt với các công cụ lập trình giúp xây dựng và phát triển các ứng dụng chất lượng cao nhất dành cho nền tảng Android của Google.
1 Trình mô phỏng nhanh và tính năng phong phú
Android Studio hỗ trợ bạn trình mô phỏng Android (Android Emulator) sẽ giúp mô phỏng thiết bị Android trên máy tính của bạn để bạn có thể kiểm tra ứng dụng của mình trên nhiều cấu hình thiết bị Android như điện thoại thông minh, máy tính bảng, TV Bạn có thể mô phỏng các cuộc gọi đến và tin nhắn văn bản, chỉ định vị trí của thiết bị, mô phỏng chuyển động xoay và các cảm biến phần cứng khác, truy cập Cửa hàng Google Play,…
2 Instant Run để đẩy các thay đổi vào ứng dụng đang chạy của bạn mà không cần xây dựng một APK mới
Tính năng Instant Run giúp lập trình viên cập nhật những thay đổi vào ứng dụng mà bạn đang chạy mà không gây khởi động lại ứng dụng Nhờ đó, người dùng không phải tạo một APK nào khác.
3 Tích hợp GitHub để giúp bạn xây dựng các tính năng ứng dụng phổ biến và nhập mã mẫu
Bạn có thể kết nối với GitHub để giúp bạn xây dựng các tính năng ứng dụng phổ biến và nhập mã mẫu GitHub được tích hợp trực tiếp với Android Studio giúp quản lý dự án trực tiếp với GitHub ngay trên Android Studio mà không cần mất thời gian để tải file, giải nén và import từ bên ngoài về vào trong Android Studio.
Trong Android Studio, Android NDK là bộ công cụ giúp bạn có thể phát triển các ứng dụng android sử dụng ngôn ngữ lập trình C, C ++ NDK cung cấp các thư viện giúp bạn quản lý các hoạt động ứng dụng và truy cập các thành phần thiết bị vật lý, chẳng hạn như cảm biến và đầu vào cảm ứng.
5 Tích hợp hỗ trợ Google Cloud Platform, dễ dàng tích hợp Google Cloud và App Engine
Google Cloud Platform cho phép bạn xây dựng, thử nghiệm và triển khai các ứng dụng trên cơ sở hạ tầng đáng tin cậy và có khả năng mở rộng cao của Google Ngoài ra, bạn có thể tích hợp với Google App Engine, cung cấp một hệ thống gồm ngôn ngữ lập trình (C#, Go, Python, Java, Ruby, PHP, ), hệ cơ sở dữ liệu, các thư viện lập trình, người lập trình sẽ viết ứng dụng và ứng dụng này sẽ chạy trên các máy chủ của Google.
6 Hỗ trợ tích hợp sâu Firebase vào trong các ứng dụng
Firebase là một dịch vụ API dùng để lưu trữ và đồng bộ dữ liệu thời gian thực (Real-time data) Firebase giúp các lập trình viên phát triển các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu Bạn có thể khám phá và tích hợp các dịch vụ Firebase trong ứng dụng của mình trực tiếp từ Android Studio trong cửa sổ trợ lý (Assistant).
Kotlin là ngôn ngữ lập trình được phát triển bởi JetBrains Nó xuất hiện lần đầu năm 2011 khi JetBrains công bố dự án của họ mạng tên "Kotlin". Đây là một ngôn ngữ mã nguồn mở
Về cơ bản, cũng như Java, C hay C++ , Kotlin cũng là "ngôn ngữ lập trình kiểu tĩnh" Nghĩa là các biến không cần phải định nghĩa trươc khi sử dụng Kiểu tĩnh thực hiện việc kê khai nghiêm ngặt hoặc khởi tạo các biến trước khi chúng được sử dụng
Kiểu tĩnh không có nghĩa chúng ta phải khai báo tất cả các biến lúc đầu trước khi sử dụng chúng Các biến có thể được khởi tạo bất cứ nơi nào trong chương trình và chúng ta có thể sử dụng chúng bất cứ nơi nào khi cần Ví dụ:
Ngoài class và method của lập trình hướng đối tượng, Kotlin cũng hỗ trợ lập trình thủ tục với việc sử dụng hàm.
Giống như Java, C and C++, điểm mấu chốt của chương trình Kotlin là hàm "main" Nó thông qua một mảng chứa bất kỳ đối số của command line nào Ví dụ
Phần đuôi file của Java là java, class, jar thì phần đuôi file của Kotlin là kt và kts.
Ngày 17/5/2017, tại Google I/O keynote, Android team đã thông báo Kotlin sẽ trở thành ngôn ngữ chính thức của Android. Điểm mạnh của Kotlin:
Kotlin biên dịch thành JVM bytecode hoặc JavaScript - Giống như Java, Bytecode cũng là format biên dịch cho Kotlin Bytecode nghĩa là một khi đã biên dịch, các đoạn code sẽ chạy thông qua một máy ảo thay vì một bộ xử lý Bằng cách này, code có thể chạy trên bất kỳ nền tảng nào, khi nó được biên dịch và chạy thông qua máy ảo Khi Kotlin được chuyển đổi thành bytecode, nó có thể truyền được qua mạng và thực hiện bởi JVM
Kotlin có thể sử dụng tất cả các nền tảng và thư viện Java hiện có - Bất kể là nền tảng cao cấp dựa trên xử lý annotation Điều quan trọng là Kotlin dễ dàng tích hợp với Maven, Gradle hay các hệ thống build khác.
Kotlin dễ học và dễ tiếp cận Có thể học dễ dàng bằng những ví dụ tham khảo đơn giản Cú pháp đơn giản và trực quan Kotlin khá giống Scala nhưng dễ hiểu hơn
Kotlin là mã nguồn mở nên không tốn kém gì để có thể sử dụng
Chuyển đổi tự động Java thành Kotlin - JetBrains tích hợp chức năng mới vào IntelliJ để chuyển đổi Java thành Kotlin và điều này tiết kiệm một lượng thời gian rất lớn Nó cũng giúp chúng ta không phải code lại kiểu tay to
Top 10 OWASP Mobile Risks - Final List 2016
1.2.1 M1: Improper Platform Usage (Sử dụng nền tảng không phù hợp)
Tác nhân đe dọa Ứng dụng cụ thể
Danh mục này bao gồm việc sử dụng sai một tính năng của nền tảng hoặc không sử dụng các biện pháp kiểm soát bảo mật của nền tảng Nó có thể bao gồm Android intents, quyền nền tảng, lạm dụng TouchID, Keychain hoặc một số kiểm soát bảo mật khác là một phần của hệ điều hành di động.
Khả năng khai thác DỄ DÀNG
Các vectơ tấn công tương ứng với các vectơ tấn công giống nhau có sẵn trong Top Ten OWASP truyền thống Bất kỳ lệnh gọi API nào bị lộ đều có thể đóng vai trò là vectơ tấn công tại đây. Điểm yếu về bảo mật
Mức độ phổ biến THƯỜNG GẶP
Khả năng phát hiện TRUNG BÌNH Để lỗ hổng này có thể bị khai thác, tổ chức phải hiển thị một dịch vụ web hoặc lệnh gọi API được sử dụng bởi ứng dụng dành cho thiết bị di động. Dịch vụ bị lộ hoặc lệnh gọi API được triển khai bằng cách sử dụng các kỹ thuật mã hóa không an toàn tạo ra lỗ hổng OWASP Top Ten trong máy chủ Thông qua giao diện di động, kẻ thù có thể cung cấp các đầu vào độc hại hoặc chuỗi sự kiện bất ngờ cho điểm cuối dễ bị tấn công Do đó, đối thủ nhận ra lỗ hổng OWASP Top Ten ban đầu trên máy chủ.
Tác động kỹ thuật của lỗ hổng này tương ứng với tác động kỹ thuật của lỗ hổng liên quan (được định nghĩa trong Top Ten của OWASP) mà đối thủ đang khai thác thông qua thiết bị di động.
Ví dụ: kẻ thù có thể khai thác lỗ hổng Cross-Site Scripting (XSS) thông qua thiết bị di động Điều này tương ứng với Danh mục OWASP Top Ten A3 - XSS với tác động kỹ thuật ở mức trung bình.
@Database(entities = [User::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao
Tác động kinh doanh Ứng dụng / Doanh nghiệp cụ thể
Tác động kinh doanh của lỗ hổng này tương ứng với tác động kinh doanh của lỗ hổng liên quan (được định nghĩa trong Top Ten OWASP) mà đối thủ đang khai thác thông qua thiết bị di động.
Ví dụ: kẻ thù có thể khai thác lỗ hổng Cross-Site Scripting (XSS) thông qua thiết bị di động Điều này tương ứng với các tác động kinh doanh của OWASP Top Ten A3 - XSS Category.
Tôi có dễ bị ‘sử dụng nền tảng không đúng cách’ không? Đặc điểm xác định của rủi ro trong danh mục này là nền tảng (iOS, Android, Windows Phone, v.v.) cung cấp một tính năng hoặc một khả năng được ghi nhận và hiểu rõ Ứng dụng không sử dụng được khả năng đó hoặc sử dụng không đúng cách Điều này khác với mười rủi ro hàng đầu trên thiết bị di động khác vì thiết kế và triển khai không hoàn toàn là vấn đề của nhà phát triển ứng dụng.
Có một số cách mà các ứng dụng dành cho thiết bị di động có thể gặp phải rủi ro này.
- Vi phạm các hướng dẫn đã xuất bản Tất cả các nền tảng đều có hướng dẫn phát triển về bảo mật (c.f., ((Android)), ((iOS)), ((Windows Phone))) Nếu một ứng dụng trái với các phương pháp hay nhất do nhà sản xuất khuyến nghị, thì ứng dụng đó sẽ phải chịu rủi ro này Ví dụ: có các hướng dẫn về cách sử dụng Chuỗi khóa iOS hoặc cách bảo mật các dịch vụ đã xuất trên Android Các ứng dụng không tuân theo các nguyên tắc này sẽ gặp rủi ro này.
- Vi phạm quy ước hoặc thông lệ Không phải tất cả các phương pháp hay nhất đều được hệ thống hóa trong hướng dẫn của nhà sản xuất Trong một số trường hợp, có những phương pháp hay nhất trên thực tế phổ biến trong các ứng dụng dành cho thiết bị di động.
- Sử dụng sai mục đích Một số ứng dụng có ý định thực hiện đúng,nhưng thực tế lại thực hiện sai một số phần Đây có thể là một lỗi đơn giản, chẳng hạn như đặt cờ sai trên lệnh gọi API hoặc có thể là sự hiểu nhầm về cách hoạt động của các biện pháp bảo vệ.
Các lỗi trong mô hình quyền của nền tảng thuộc loại này Ví dụ: nếu ứng dụng yêu cầu quá nhiều quyền hoặc sai quyền, thì tốt nhất nên phân loại ở đây.
Làm cách nào để ngăn chặn 'Sử dụng nền tảng không phù hợp'?
Các phương pháp cấu hình và mã hóa an toàn phải được sử dụng ở phía máy chủ của ứng dụng di động Để biết thông tin về lỗ hổng cụ thể, hãy tham khảo các dự án OWASP Web Top Ten hoặc Cloud Top Ten.
Các tình huống tấn công ví dụ
Bởi vì có một số nền tảng, mỗi nền tảng có hàng trăm hoặc hàng nghìn API, các ví dụ trong phần này chỉ làm nổi bật những gì có thể.
Bộ nhớ cục bộ ứng dụng thay vì Keychain iOS Keychain là một phương tiện lưu trữ an toàn cho cả dữ liệu ứng dụng và hệ thống Trên iOS, các ứng dụng nên sử dụng nó để lưu trữ bất kỳ dữ liệu nhỏ nào có ý nghĩa bảo mật (khóa phiên, mật khẩu, dữ liệu đăng ký thiết bị, v.v.) Một sai lầm phổ biến là lưu trữ các mục như vậy trong bộ nhớ cục bộ của ứng dụng Dữ liệu được lưu trữ trong bộ nhớ cục bộ của ứng dụng có sẵn trong các bản sao lưu iTunes không được mã hóa (ví dụ: trên máy tính của người dùng) Đối với một số ứng dụng, mức độ hiển thị đó là không phù hợp.
1.2.2 M2: Insecure Data Storage (Lưu trữ dữ liệu không an toàn)
Tác nhân đe dọa Ứng dụng cụ thể
Demo
Thông tin cơ bản
- Tên App: Quản lý công việc (Task Managerment)
- Cơ sở dữ liệu: SQLite - thư viện Room Database
Chức năng
- Quản lý đăng nhập (đăng nhập, đăng ký)
- Sắp xếp task theo thứ tự ưu tiên