본문 바로가기
Dart/Flutter

[Flutter] 모바일 앱을 보호하기 위한 몇가지 보안

by 검은냥냥이 2023. 5. 21.

난독화 코드

난독화는 역엔지니어링을 위해 코드를 읽기 어렵게 만드는 것입니다.

난독화 코드에 대한 방법은 넘어가겠습니다.

 

메모리 캐시 플러시

뱅킹 앱과 같은 안전을 중요시하는 앱의 경우 주기적으로 인메모리 캐시를 플러시해야 합니다.

class CacheControl extends WidgetsBindingObserver {
	CacheControl() {
    	WidgetsBinding.instance.addObserver(this);
    }

	void _cleanAllCache() {
    	// Cleans all cache.
    }
    
    @override
    void didChangeAppLifecycleState(ApplifecycleState state) {
    	// 앱이 일시 중지된 시점 체크
    	if (state == AppLifecycleState.paused) {
        	Future.delayed(
            	const Duration(minutes: 15),
                _cleanAllCache,
            );
        }
    }
}

 

로컬인증

로컬인증은 생체, 얼굴 인식 또는 유사한 것을 의미합니다.

앱이 백그라운드에서 돌아와 열릴 때 로컬에서 사용자가 맞는지 인증하여 보안하는 방법입니다.

mobile fingerprint recognition

 

네트워크 트래픽 제한

AOS

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
   <network-security-config>  
   
    <domain-config>
     <domain includeSubdomains="true">yourDomain.com</domain>    
    <trust-anchors>   
     <certificates src="@raw/my_ca"/>    
    </trust-anchors>    
  </domain-config>
 
 </network-security-config>

 

IOS

ios/Info.plist

<key>NSAppTransportSecurity</key> 
  <dict> 
  <key>NSAllowsArbitraryLoads</key>   
  <false/> 
 <key>NSExceptionDomains</key>   
  <dict>     
 <key>cocoacasts.com</key>     
  <dict>       
 <key>NSIncludesSubdomains</key>       
  <true/>       
 <key>NSExceptionAllowsInsecureHTTPLoads</key>
  <true/> 
  </dict>
 </dict>
 </dict>

 

루팅에 대한 보호

루팅 여부 감지

 

flutter_jailbreak_detection | Flutter Package

Flutter jailbreak and root detection plugin. This plugin wraps Rootbeer for use on Android and DTTJailbreakDetection for use on iOS.

pub.dev

import 'package:flutter_jailbreak_detection/flutter_jailbreak_detection.dart';

bool jailbroken = await FlutterJailbreakDetection.jailbroken;
bool developerMode = await FlutterJailbreakDetection.developerMode;
728x90
사업자 정보 표시
레플라 | 홍대기 | 경기도 부천시 부일로 519 화신오피스텔 1404호 | 사업자 등록번호 : 726-04-01977 | TEL : 070-8800-6071 | Mail : support@reafla.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기