iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
Mobile Development

畢業專題拯救計畫系列 第 27

Flutter中的應用安全--App Security

  • 分享至 

  • xImage
  •  

應用安全(App Security)是指確保應用程序免受各種威脅和攻擊,保護用戶的數據和隱私。

常見的應用安全措施有:

數據加密

加密儲存的數據

import 'package:encrypt/encrypt.dart' as encrypt;

final key = encrypt.Key.fromLength(32); // 使用 256-bit 密鑰
final iv = encrypt.IV.fromLength(16); // 初始化向量

final encrypter = encrypt.Encrypter(encrypt.AES(key));

// 加密數據
String encryptData(String plainText) {
  final encrypted = encrypter.encrypt(plainText, iv: iv);
  return encrypted.base64;
}

// 解密數據
String decryptData(String encryptedText) {
  final decrypted = encrypter.decrypt64(encryptedText, iv: iv);
  return decrypted;
}

身份驗證

使用 Firebase Authentication 進行用戶登錄

import 'package:firebase_auth/firebase_auth.dart';

// 登錄
Future<void> signInWithEmailPassword(String email, String password) async {
  try {
    UserCredential userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword(
      email: email,
      password: password,
    );
    // 登錄成功,執行相關操作
  } catch (e) {
    print("登錄錯誤: $e");
    // 處理登錄錯誤
  }
}

API 請求驗證

發送帶有 Bearer Token 的 HTTP 請求

import 'package:http/http.dart' as http;

Future<void> fetchData() async {
  final response = await http.get(
    Uri.parse('https://api.example.com/data'),
    headers: {
      'Authorization': 'Bearer YOUR_ACCESS_TOKEN', // 在這裡替換為真實的 token
    },
  );

  if (response.statusCode == 200) {
    // 處理成功響應
    print("數據: ${response.body}");
  } else {
    // 處理錯誤響應
    print("請求錯誤: ${response.statusCode}");
  }
}

防止 SQL 注入

使用 ORM 進行安全的資料庫查詢

import 'package:moor/moor.dart';

@DataClassName('User')
class Users extends Table {
  IntColumn get id => integer().autoIncrement()();
  TextColumn get name => text().withLength(min: 1, max: 50)();
  TextColumn get email => text().withLength(min: 1, max: 100)();
}

@UseMoor(tables: [Users])
class AppDatabase extends _$AppDatabase {
  AppDatabase(QueryExecutor e) : super(e);

  @override
  int get schemaVersion => 1;

  Future<List<User>> getAllUsers() => select(users).get();

  Future<void> insertUser(User user) => into(users).insert(user);
}

我們明天見~


上一篇
Flutter中的日誌--logger
下一篇
Flutter中的整合與部署--CI/CD
系列文
畢業專題拯救計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言