iOS Serialisation and Encoding
コードと詳細情報はhttps://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistenceで確認できます。
iOS開発におけるオブジェクトシリアライゼーション
iOSにおいて、オブジェクトのシリアライゼーションは、オブジェクトを簡単に保存または送信できる形式に変換し、必要に応じてこの形式から再構築することを指します。NSCoding
と NSSecureCoding
という2つの主要なプロトコルが、Objective-Cまたは NSObject
のサブクラスに対して、オブジェクトを NSData
にシリアライズするプロセスを容易にします。
NSCoding
の実装
NSCoding
の実装NSCoding
を実装するには、クラスは NSObject
を継承するか @objc
とマークされている必要があります。このプロトコルは、エンコードとデコードのための2つのメソッドの実装を要求します。
NSSecureCoding
を使用したセキュリティの強化
NSSecureCoding
を使用したセキュリティの強化攻撃者がすでに構築されたオブジェクトにデータを注入する脆弱性を緩和するために、**NSSecureCoding
**は強化されたプロトコルを提供します。NSSecureCoding
に準拠するクラスは、デコード中にオブジェクトのタイプを検証する必要があり、想定されているオブジェクトタイプのみがインスタンス化されることを保証します。ただし、NSSecureCoding
はタイプの安全性を向上させる一方で、データを暗号化したり整合性を確保したりしないことに注意することが重要です。したがって、機密情報を保護するために追加の対策が必要です。
NSKeyedArchiver
を使用したデータアーカイブ
NSKeyedArchiver
を使用したデータアーカイブNSKeyedArchiver
とその対応物であるNSKeyedUnarchiver
は、オブジェクトをファイルにエンコードして後で取得する機能を可能にします。このメカニズムはオブジェクトを永続化するのに役立ちます。
Codable
を使用したシンプルなシリアル化
Codable
を使用したシンプルなシリアル化SwiftのCodable
プロトコルは、String
、Int
、Double
などのオブジェクトのエンコーディングとデコーディングを容易にするDecodable
とEncodable
を組み合わせたものです。
このアプローチは、プロパティリストやJSONへの直感的なシリアル化をサポートし、Swiftアプリケーションでのデータ処理を向上させます。
JSONおよびXMLエンコーディングの代替手段
ネイティブサポートに加えて、いくつかのサードパーティライブラリがJSONおよびXMLのエンコーディング/デコーディング機能を提供しており、それぞれ独自のパフォーマンス特性とセキュリティ上の考慮事項があります。特に外部エンティティ処理を防止するためにパーサを構成してXXE(XML External Entities)攻撃などの脆弱性を緩和するために、これらのライブラリを注意して選択することが重要です。
セキュリティ上の考慮事項
データをシリアル化する際、特にファイルシステムには、機密情報が含まれる可能性について警戒することが重要です。インターセプトされたり適切に処理されなかったりした場合、シリアル化されたデータは、アプリケーションが不正なアクションやデータ漏洩などのリスクにさらされる可能性があります。シリアル化されたデータの暗号化と署名がセキュリティを向上させるために推奨されています。
参考文献
Last updated