iOS Serialisation and Encoding
Código e mais informações em https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Serialização de Objetos no Desenvolvimento iOS
No iOS, a serialização de objetos envolve a conversão de objetos em um formato que pode ser facilmente armazenado ou transmitido, e depois reconstruí-los a partir desse formato quando necessário. Dois protocolos principais, NSCoding
e NSSecureCoding
, facilitam esse processo para subclasses Objective-C ou NSObject
, permitindo que objetos sejam serializados em NSData
, um formato que envolve buffers de bytes.
Implementação de NSCoding
NSCoding
Para implementar NSCoding
, uma classe deve herdar de NSObject
ou ser marcada como @objc
. Este protocolo exige a implementação de dois métodos para codificar e decodificar variáveis de instância:
Aprimorando a Segurança com NSSecureCoding
NSSecureCoding
Para mitigar vulnerabilidades onde atacantes injetam dados em objetos já construídos, o NSSecureCoding
oferece um protocolo aprimorado. Classes que se conformam com NSSecureCoding
devem verificar o tipo de objetos durante a decodificação, garantindo que apenas os tipos de objetos esperados sejam instanciados. No entanto, é crucial observar que, enquanto o NSSecureCoding
aprimora a segurança de tipos, ele não criptografa dados ou garante sua integridade, sendo necessárias medidas adicionais para proteger informações sensíveis:
Arquivamento de Dados com NSKeyedArchiver
NSKeyedArchiver
NSKeyedArchiver
e seu contraparte, NSKeyedUnarchiver
, permitem codificar objetos em um arquivo e posteriormente recuperá-los. Esse mecanismo é útil para persistir objetos:
Usando Codable
para Serialização Simplificada
Codable
para Serialização SimplificadaO protocolo Codable
do Swift combina Decodable
e Encodable
, facilitando a codificação e decodificação de objetos como String
, Int
, Double
, etc., sem esforço adicional:
Esta abordagem suporta a serialização direta para e a partir de listas de propriedades e JSON, aprimorando o manuseio de dados em aplicativos Swift.
Alternativas de Codificação JSON e XML
Além do suporte nativo, várias bibliotecas de terceiros oferecem capacidades de codificação/decodificação JSON e XML, cada uma com suas próprias características de desempenho e considerações de segurança. É imperativo selecionar cuidadosamente essas bibliotecas, especialmente para mitigar vulnerabilidades como ataques XXE (Entidades Externas XML) configurando os analisadores para evitar o processamento de entidades externas.
Considerações de Segurança
Ao serializar dados, especialmente para o sistema de arquivos, é essencial estar atento à possível inclusão de informações sensíveis. Dados serializados, se interceptados ou manipulados de forma inadequada, podem expor aplicativos a riscos como ações não autorizadas ou vazamento de dados. Recomenda-se criptografar e assinar dados serializados para aumentar a segurança.
Referências
Last updated