mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
87 lines
6 KiB
Markdown
87 lines
6 KiB
Markdown
{% hint style="success" %}
|
|
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Ondersteun HackTricks</summary>
|
|
|
|
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
|
|
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
Kode en meer inligting in [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence).
|
|
|
|
## Objekt Serialisering in iOS Ontwikkeling
|
|
|
|
In iOS, **objekt serialisering** behels die omskakeling van objekten in 'n formaat wat maklik gestoor of oorgedra kan word, en dan die heropbou daarvan uit hierdie formaat wanneer nodig. Twee hoof protokolle, **`NSCoding`** en **`NSSecureCoding`**, fasiliteer hierdie proses vir Objective-C of `NSObject` subklasse, wat objekten toelaat om in **`NSData`** geserialiseer te word, 'n formaat wat byte buffers omhul.
|
|
|
|
### **`NSCoding`** Implementasie
|
|
Om `NSCoding` te implementeer, moet 'n klas van `NSObject` erf of gemerk wees as `@objc`. Hierdie protokol vereis die implementering van twee metodes vir die kodering en dekodering van instansie veranderlikes:
|
|
```swift
|
|
class CustomPoint: NSObject, NSCoding {
|
|
var x: Double = 0.0
|
|
var name: String = ""
|
|
|
|
func encode(with aCoder: NSCoder) {
|
|
aCoder.encode(x, forKey: "x")
|
|
aCoder.encode(name, forKey: "name")
|
|
}
|
|
|
|
required convenience init?(coder aDecoder: NSCoder) {
|
|
guard let name = aDecoder.decodeObject(forKey: "name") as? String else { return nil }
|
|
self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
|
|
}
|
|
}
|
|
```
|
|
### **Verbetering van Sekuriteit met `NSSecureCoding`**
|
|
Om kwesbaarhede te verminder waar aanvallers data in reeds geboude voorwerpe inspuit, bied **`NSSecureCoding`** 'n verbeterde protokol. Klasse wat aan `NSSecureCoding` voldoen, moet die tipe voorwerpe tydens dekodering verifieer, wat verseker dat slegs die verwagte voorwerp tipes geïnstantieer word. Dit is egter belangrik om op te let dat terwyl `NSSecureCoding` tipe veiligheid verbeter, dit nie data enkripteer of die integriteit daarvan verseker nie, wat addisionele maatreëls vereis om sensitiewe inligting te beskerm:
|
|
```swift
|
|
static var supportsSecureCoding: Bool {
|
|
return true
|
|
}
|
|
|
|
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
|
|
```
|
|
## Data Archiving with `NSKeyedArchiver`
|
|
`NSKeyedArchiver` en sy teenhanger, `NSKeyedUnarchiver`, stel in staat om voorwerpe in 'n lêer te kodifiseer en dit later weer te onttrek. Hierdie meganisme is nuttig om voorwerpe te behou:
|
|
```swift
|
|
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
|
|
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
|
|
```
|
|
### Gebruik van `Codable` vir Vereenvoudigde Serialisering
|
|
Swift se `Codable` protokol kombineer `Decodable` en `Encodable`, wat die kodering en dekodering van voorwerpe soos `String`, `Int`, `Double`, ens., vergemaklik sonder ekstra moeite:
|
|
```swift
|
|
struct CustomPointStruct: Codable {
|
|
var x: Double
|
|
var name: String
|
|
}
|
|
```
|
|
Hierdie benadering ondersteun eenvoudige serialisering na en van eiendomslyste en JSON, wat datahantering in Swift-toepassings verbeter.
|
|
|
|
## JSON en XML Kodering Alternatiewe
|
|
Benewens inheemse ondersteuning, bied verskeie derdeparty-biblioteke JSON en XML kodering/dekodering vermoëns, elk met sy eie prestasiekenmerke en sekuriteits oorwegings. Dit is noodsaaklik om hierdie biblioteke versigtig te kies, veral om kwesbaarhede soos XXE (XML External Entities) aanvalle te verminder deur parsers te konfigureer om eksterne entiteitverwerking te voorkom.
|
|
|
|
### Sekuriteits Oorwegings
|
|
Wanneer data geserialiseer word, veral na die lêerstelsel, is dit noodsaaklik om waaksaam te wees oor die potensiële insluiting van sensitiewe inligting. Geserialiseerde data, indien onderskep of verkeerd hanteer, kan toepassings blootstel aan risiko's soos ongeoorloofde aksies of datalek. Dit word aanbeveel om geënkripteerde en ondertekende geserialiseerde data te gebruik om sekuriteit te verbeter.
|
|
|
|
## Verwysings
|
|
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|