Tổng quan về hệ điều hành di động Hệ điều hành di động mobile operating system là một hệ điều hành dành cho các thiết bị điện thoại di động, máy tính bảng, đồng hồ thông minh, laptop 2 t
Trang 1BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHÁT TRIỂN ỨNG DỤNG TRÊN NỀN TẢNG DI ĐỘNG
XÂY DỰNG ỨNG DỤNG ĐIỂM DANH CHO
TRƯỜNG HỌC AN TOÀN
Ngành: An toàn thông tin
Sinh viên thực hiện:
Trịnh Bá Quý - AT180340
Lớp: AT18CP
Nhóm: 18
Người hướng dẫn:
TS: Nguyễn Mạnh Thắng
Khoa ATTT - Học viện KTMM
Hà Nội - 2024
Trang 2MỤC LỤC
Mục lục i
Danh mục hình vẽ iii
Danh mục bảng iii
Lời cảm ơn iv
Lời nói đầu v
Chương 1 Giới thiệu tổng quan 1
1.1 Khảo sát hiện trạng 1
1.2 Mục tiêu 1
1.3 Tổng quan về hệ điều hành di động 1
1.4 Công nghệ sử dụng 1
1.4.1 Ngôn ngữ lập trình Dart 1
1.4.2 Flutter Framework 3
1.5 Một số nguy cơ mất an toàn trong xác thực người dùng 8
1.5.1 Rò rỉ thông tin 8
1.5.2 Giả mạo danh tính 8
1.5.3 Đăng nhập bất cứ ví trị nào 8
1.5.4 Truy cập trái phép 8
Chương 2 Phân tích thiết kế hệ thống ứng dụng điểm danh cho trường học an toàn 8
2.1 Ý nghĩa khoa học và thực tiễn của hệ thống 8
2.1.1 Ý nghĩa khoa học 8
2.1.2 Ý nghĩa thực tiễn 8
2.2 Đặc tả yêu cầu hệ thống 8
2.2.1 Đặc tả chức năng 8
2.2.2 Đặc tả phi chức năng 8
2.3 Phân tích thiết kế hệ thống 8
2.3.1 Phạm vi hệ thống 8
2.3.2 Yêu cầu hệ thống 8
2.3.3 Biểu đồ usercase tổng quát 8
2.3.4 Đặc tả ca sử dụng 8
2.3.5 Phân tích ca sử dụng 8
2.3.6 Xây dựng cơ sở dữ liệu 8
Chương 3 TRIỂN KHAI ỨNG DỤNG điểm danh cho trường học 8
3.1 Xác thực người dùng 9
3.2 Tính năng an toàn 9
Trang 33.2.1 Chặn quay/chụp màn hình 9
3.2.2 Phát hiện cảnh báo đăng nhập trên cùng một thiết bị 9
3.2.3 Lưu vị trí khi điểm danh 9
3.3 Giao diện người dùng 9
3.4 Thực hiện kiểm thử 9
KẾT LUẬN 9
TÀI LIỆU THAM KHẢO 9
Trang 4DANH MỤC HÌNH VẼ DANH MỤC BẢNG
Trang 5LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy cô trường Học viện Kỹ thuật mật mã nói chung, quý thầy cô của khoa An toàn thông tin nói riêng đã tận tình dạy bảo, truyền đạt kiến thức cho chúng em trong suốt quá trình học
Kính gửi đến thầy cô lời cảm ơn chân thành và sâu sắc, cảm ơn thầy cô đã tận tình theo sát và chỉ dẫn cho nhóm em trong quá trình thực hiện đề tài này Thầy cô không những chỉ hướng dẫn chúng em kiến thức chuyên ngành, mà còn giúp chúng em học thêm những kĩ năng, tinh thần, thái độ khi làm việc nhóm
Trong quá trình tìm hiểu nhóm chúng em xin cảm ơn các bạn cùng khóa
đã góp ý, giúp đỡ nhóm em rất nhiều trong quá trình tìm hiểu và làm đề tài
Do kiến thức còn nhiều hạn chế nên không thể tránh khỏi những thiếu sót trong cách xây dựng ứng dụng, lỗi trình bày, Chúng em rất mong nhận được
sự đóng góp ý kiến của quý thầy cô để đề tài của chúng em đạt được kết quả tốt hơn
Chúng em xin chân thành cảm ơn!
Trang 6LỜI NÓI ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của khoa học công nghệ, Công nghệ Thông tin là một trong những ngành có vị thế dẫn đầu và có vai trò rất lớn trong
sự phát triển chung đó Các ứng dụng của công nghệ thông tin được áp dụng trong mọi lĩnh vực nghiên cứu khoa học cũng như trong mọi lĩnh vực của đời sống Là một phần của Công nghệ Thông tin, Công nghệ phần mềm đang có được sự phát triển mạnh mẽ và phổ biến rất nhanh bởi những lợi ích mà nó mang lại cho cộng đồng là rất lớn
Bằng việc lựa chọn và thực hiện đề tài “Xây dựng ứng dụng điểm danh cho trường học” nhóm chúng em mong muốn tìm hiểu và đưa ra một giải pháp tốt nhất nhằm xây dựng một nền tảng điểm danh nhanh chóng và hiệu quả với tất cả mọi người
Mục tiêu:
- Phát triển ứng dụng cung cấp một giao diện dễ sử dụng để thực hiện việc điểm danh sinh viên một cách nhanh chóng và hiệu quả, đồng thời đảm bảo tính chính xác
- Cung cấp một số tính năng cho phép người dùng quản lý thông tin điểm danh, thông tin cá nhân và lịch học
- Đảm bảo ứng dụng có thể chạy trên nhiều nền tảng di động phổ biến như iOS và Android để phục vụ cho sự đa dạng của người dùng
Nội dung đề tài gồm các chương:
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
CHƯƠNG 3: CHƯƠNG TRÌNH THỰC NGHIỆM
Trang 7CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 1.1 Khảo sát hiện trạng
1.2 Mục tiêu
1.3 Tổng quan về hệ điều hành di động
Hệ điều hành di động (mobile operating system) là một hệ điều hành dành cho các thiết bị điện thoại di động, máy tính bảng, đồng hồ thông minh, laptop 2 trong 1 (laptop có thể chuyển giữa chế độ máy tính và máy tính bảng), hoặc các thiết bị di động khác Trong khi đa phần các máy tính xách tay (laptop) cũng có tính "di động", nhưng các hệ điều hành thường được sử dụng trên chúng không được xem là hệ điều hành di động, vì các hệ điều hành này được thiết kế ban đầu cho máy tính để bàn và không có hoặc không cần các tính năng di động cụ thể Ngày nay, sự phân biệt giữa hệ điều hành cho máy tính để bàn và hệ điều hành
di động càng trở nên mờ dần, khi một số hệ điều hành mới hoặc các phiên bản mới cho phép hỗ trợ cả hai nền tảng di động và cố định
Hệ điều hành di động là tập hợp dữ liệu và chương trình chạy trên thiết bị
di động Nó quản lý phần cứng và làm cho điện thoại thông minh, máy tính bảng
và thiết bị đeo được có thể chạy các ứng dụng Một hệ điều hành di động cũng quản lý các chức năng đa phương tiện di động, kết nối di động và internet, màn hình cảm ứng, kết nối Bluetooth, điều hướng GPS, camera, nhận dạng giọng nói
và nhiều tính năng khác trong thiết bị di động Hầu hết các hệ điều hành không thể hoán đổi cho nhau giữa các thiết bị
Các hệ điều hành di động cần được nâng cấp thường xuyên để cải thiện khả năng của thiết bị và để vá các lỗ hổng bảo mật Người dùng nên giữ tất cả các thiết bị di động của mình được nâng cấp lên phiên bản mới nhất của hệ điều hành
1.4 Công nghệ sử dụng
1.4.1 Ngôn ngữ lập trình Dart
a) Giới thiệu tổng quan
Dart là ngôn ngữ lập trình đa mục đích Ban đầu được phát triển bởi Google và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn Dart được chính thức công bố tại Hội thảo GOTO ngày 10 - 12 tháng 10 năm 2011 tại Aarhus Ngôn ngữ này được sử dụng để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage - collected, sử dụng cú pháp kiểu C
Trang 8để dịch mã tùy ý sang JavaScript Ngôn ngữ này hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe) Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub
Dart SDK cung cấp những công cụ cần thiết để phát triển ứng dụng viết bằng Dart Tuỳ thuộc sử dụng môi trường nào (Windows, Linux, MacOs) thì cài đặt Dart SDK tương ứng cho môi trường đó Các thành phần trong Dart SDK bao gồm:
- Dart: máy ảo VM chạy mã Dart
- Dart2js: biên dịch Dart thành JavaScript
- Dartanalyzer: phân tích mã viết bằng Dart
- Dartdevc: công cụ biên dịch cho ứng dụng web
- Dartdoc: phát sinh tài liệu API
- Dartfmt: định dạng mã Dart (đảm bảo việc đẹp, đúng chuẩn và dễ đọc)
- Pub: quản lý gói trong Dart (giống npm của NodeJS)
Có nhiều IDE phức tạp hỗ trợ Dart thông qua các plugin như: Android Studio, IntelliJ, Visual Studio Code, … Tuỳ mục đích phát triển ứng dụng mà chọn IDE tương ứng
Các nhà phát triển tại Google và các nơi khác sử dụng Dart để tạo các ứng dụng chất lượng cao dành cho iOS, Android, Linux, Window và Web Với các tính năng nhắm đến sự phát triển phía khách hàng, Dart rất phù hợp cho cả ứng dụng di động và web Dart giúp các lập trình viên tạo ra những trải nghiệm đẹp, chất lượng cao trên tất cả các màn hình, với:
- Một ngôn ngữ được tối ưu hóa cho client
- Framework mạnh mẽ
- Công cụ linh hoạt
b) Các ưu điểm của Dart
- Năng suất: Cú pháp Dart rõ ràng và súc tích, công cụ đơn giản nhưng
mạnh mẽ Type-safe giúp các nhà phát triển xác định sớm các lỗi Dart có các thư viện cốt lõi và một hệ sinh thái gồm hàng nghìn package
- Nhanh: Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được
dự đoán hiệu suất cao và khởi động nhanh trên các thiết bị di động và web
- Di động: Dart biên dịch thành mã ARM và x86, để các ứng dụng di động
của Dart có thể chạy tự nhiên trên iOS, Android và hơn thế nữa Đối với các ứng dụng web, chuyển mã từ Dart sang JavaScript
Trang 9- Dễ gần: Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú
pháp và định hướng đối tượng của nó Đối với các lập trình viên từng làm việc với C++, C# hoặc Java, việc làm quen và sử dụng Dart là tương đối
dễ dàng
- Reactive: Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản lý
các đối tượng tồn tại trong thời gian ngắn, chẳng hạn như các widget UI, thông qua phân bổ đối tượng nhanh và GC Dart hỗ trợ lập trình không đồng bộ thông qua các tính năng ngôn ngữ và API sử dụng các đối tượng Future và Stream
1.4.2 Flutter Framework
a) Giới thiệu tổng quan
Flutter được Google giới thiệu lần đầu tiên vào năm 2017 dưới dạng phiên bản beta Ý tưởng đằng sau Flutter là tạo ra một framework nhanh chóng và hiệu quả để xây dựng các ứng dụng di động hiệu suất cao và hấp dẫn trực quan Khung được xây dựng bằng ngôn ngữ lập trình Dart, cũng được tạo bởi Google
Phiên bản beta của Flutter đã nhận được phản hồi tích cực từ các nhà phát triển và Google tiếp tục làm việc trên framework này, thêm các tính năng mới và sửa lỗi Vào năm 2018, Flutter đã chính thức được phát hành dưới dạng phiên bản ổn định và kể từ đó, framework này đã trở nên phổ biến đối với các nhà phát triển và các công ty công nghệ
Qua 5 năm phát triển, Flutter đã tiếp tục phát triển và mở rộng khả năng của mình Giờ đây, Flutter không chỉ hỗ trợ phát triển ứng dụng dành cho thiết
bị di động mà còn hỗ trợ phát triển ứng dụng web và máy tính để bàn Google cũng đã phát hành một số package và plugin có thể được sử dụng để mở rộng chức năng của các ứng dụng Flutter
Trong những năm gần đây, Flutter đã đạt được sức hút đáng kể trong cộng đồng phát triển và hiện đang được nhiều công ty sử dụng để xây dựng các ứng dụng web và di động chất lượng cao với chi phí tiết kiệm
Flutter được dùng cho nhiều loại module của Google Assistant, ngoài ra là cho giao diện người dùng Google Home Hub Hiện có khoảng 50,000 ứng dụng Flutter sẵn có trên Google Play Store và con số này vẫn đang tiếp tục tăng dần Tập đoàn Alibaba, eBAY, Groupon và nhiều nền tảng thương mại khác cũng đang sử dụng Flutter để tạo ra diện mạo thống nhất giữa các website và ứng dụng của mình
Trang 10b) Kiến trúc Flutter
Flutter được thiết kế như một hệ thống nhiều lớp, có thể mở rộng Các lớp tồn tại dưới dạng một loạt các thư viện độc lập mà mỗi thư viện phụ thuộc vào lớp bên dưới Không có lớp nào có quyền truy cập đặc quyền vào lớp bên dưới
và mọi phần của mức khung được thiết kế để trở thành tùy chọn và có thể thay thế
Hình 2.1 Kiến trúc Flutter
Embedder Platform-specific: Đối với hệ điều hành cơ bản, các ứng
dụng Flutter được đóng gói giống như các ứng dụng gốc khác Embedder Platform-specific cung cấp một điểm nhập, phối hợp với hệ điều hành cơ bản để truy cập vào các dịch vụ như hiển thị bề mặt, khả năng truy cập và đầu vào và quản lý vòng lặp sự kiện tin nhắn Trình nhúng được viết bằng ngôn ngữ phù hợp với nền tảng: hiện tại là Java và C ++ cho Android, Objective-C / Objective-C ++ cho iOS và macOS, và C ++ cho Windows và Linux Sử dụng công cụ nhúng, mã Flutter có thể được tích hợp vào ứng dụng hiện có dưới dạng mô-đun hoặc mã có thể là toàn bộ nội dung của ứng dụng Flutter bao gồm một
số trình nhúng cho các nền tảng mục tiêu chung
Flutter Engine: Cốt lõi của Flutter là Flutter Engine, phần lớn được viết
bằng C++ và hỗ trợ các nguyên tắc cần thiết để hỗ trợ tất cả các ứng dụng Flutter Flutter Engine chịu trách nhiệm sắp xếp các cảnh tổng hợp bất cứ khi nào cần sơn một khung mới cung cấp triển khai cấp thấp của API cốt lõi của Flutter, bao gồm đồ họa, bố cục văn bản, tệp và mạng I/O, hỗ trợ trợ năng, kiến trúc plugin và chuỗi công cụ biên dịch và thời gian chạy Dart
Trang 11Flutter Framework: cung cấp một framework hiện đại được viết bằng
ngôn ngữ Dart Framework này bao gồm một bộ thư viện nền tảng, bố cục và nền tảng phong phú, bao gồm một loạt các lớp Làm việc từ dưới lên trên, gồm:
Foundation classes và các dịch vụ khối xây dựng như animation,
painting, and gestures cung cấp các nội dung trừu tượng thường được sử dụng trên nền tảng cơ bản
Rendering layer: cung cấp một sự trừu tượng để xử lý bố cục Với lớp
này, có thể xây dựng một cây các đối tượng có thể kết xuất, có thể thao tác động các đối tượng này, với cây tự động cập nhật bố cục để phản ánh các thay đổi
Widgets layer là một phần trừu tượng hóa thành phần Mỗi đối tượng kết
xuất trong lớp kết xuất có một lớp tương ứng trong lớp vật dụng Ngoài ra, lớp vật dụng cho phép xác định tổ hợp các lớp có thể sử dụng lại Đây là lớp mà tại
đó mô hình lập trình phản ứng được giới thiệu
Các thư viện Material và Cupertino cung cấp các bộ điều khiển toàn diện
sử dụng các thành phần native của lớp widget để triển khai ngôn ngữ thiết kế Material hoặc iOS
c) Ưu điểm và hạn chế của Flutter
Ưu điểm
o Phát triển đa nền tảng
Flutter cho phép các nhà phát triển xây dựng một cơ sở mã duy nhất và sử dụng cho một số nền tảng như web, máy tính để bàn và thiết bị di động Điều này giúp khởi chạy ứng dụng nhanh hơn và tiết kiệm chi phí
o Hiệu suất giống như native
Đây là một trong những lợi thế nổi bật nhất của Flutter Flutter hoạt động với Skia, một công cụ đồ họa cho phép phát triển nhanh chóng và được tối ưu hóa tốt Ứng dụng Flutter cũng không thể phân biệt được với các ứng dụng native vì không dựa vào trình thông dịch hoặc biểu diễn mã trung gian
o Cộng đồng mạnh mẽ
Theo statista, Flutter đã trở thành một trong những framework phổ biến nhất và là lựa chọn hàng đầu của các nhà phát triển trên toàn cầu Hơn 40 phần trăm các nhà phát triển phần mềm đã chọn Flutter trong suốt bốn năm qua Biểu
đồ sau đây cho thấy mức độ quan tâm ngày càng tăng đối với Flutter so với các công cụ ứng dụng đa nền tảng khác
Trang 12Hình 2.2 Biểu đồ sự phát triển của các nền tảng cross-platform từ 2019 – 2022
o Phát triển nhanh
Khả năng hot reload của Flutter cho phép các nhà phát triển thấy các thay đổi đối với ứng dụng trong thời gian thực khi họ sửa đổi code Điều này có thể làm tăng đáng kể tốc độ và hiệu quả của quá trình phát triển ứng dụng
o Giao diện người dùng đẹp
Flutter cung cấp một tập hợp phong phú các tiện ích tùy chỉnh có thể được
sử dụng để tạo giao diện đẹp và thân thiện với người dùng Framework này cũng nhấn mạnh vào thiết kế và sự hấp dẫn về mặt hình ảnh, làm cho Flutter trở thành một lựa chọn hàng đầu cho các dự án phát triển ứng dụng đòi hỏi mức độ hấp dẫn về mặt hình ảnh cao
o Hiệu suất cao
Flutter cung cấp hoạt ảnh và chuyển tiếp nhanh và mượt mà, đồng thời được thiết kế để chạy mượt mà trên các thiết bị cũ Framework này được tối ưu hóa cho hiệu suất, làm cho Flutter trở thành một lựa chọn hấp dẫn cho các ứng dụng di động đòi hỏi khắt khe Kết quả là số lượng người dùng mục tiêu tăng lên
o Dựa trên ngôn ngữ Dart
Trang 13Lý do các nhà phát triển chọn Flutter là vì ngôn ngữ lập trình Dart mà Flutter dựa trên Dart có các tính năng nổi bật so với các ngôn ngữ khác:
Trình biên dịch Ahead Of Time (AOT) giúp Flutter Widget có thể tùy chỉnh và khởi động nhanh
Trình biên dịch Just In Time (JIT), cho phép tối ưu hóa mã trong khi mã đang chạy
Dart biên dịch thành JavaScript được tối ưu hóa cao trên nền tảng web Bước tiếp theo là WebAssugging cho Web sẽ cung cấp tốc độ thực thi/hoạt ảnh tốt hơn nhiều so với các nền tảng khác Đây chỉ là một số tính năng khiến Dart được coi là một lợi thế khi sử dụng Flutter cho mục đích phát triển
o Mã nguồn mở
Flutter là một framework mã nguồn mở và miễn phí, giúp nhiều nhà phát triển và công ty có thể truy cập nó Cộng đồng lớn gồm các nhà phát triển và người dùng làm việc với khung giúp đảm bảo rằng khung tiếp tục phát triển và
mở rộng khả năng của mình
Hạn chế
o Giới hạn về số lượng thư viện bên thứ ba
Mặc dù Flutter có sẵn số lượng package/plugin lớn và ngày càng tăng, nhưng Flutter vẫn còn tương đối mới và số lượng thư viện bên thứ ba có sẵn bị hạn chế so với các framework lâu đời hơn như React Native
o Kích cỡ ứng dụng
Ứng dụng Flutter có kích thước tương đối lớn so với các ứng dụng truyền thống do gói chứa các phần tử giao diện gốc Điều này có thể ảnh hưởng đến thời gian tải và dung lượng ứng dụng
o Các vấn đề với iOS
Flutter hoạt động tốt trên cả Android và iOS Tuy nhiên, Flutter được phát triển bởi Google, mang lại lợi thế chính cho các ứng dụng Android Tuy hiện tại không được coi là một vấn đề lớn, nhưng đây là điều cần xem xét trong trường hợp một số vấn đề có thể xảy ra trong tương lai