Ich muss Offline-Login in meiner Anwendung implementieren.Ist derzeit speichern ich Passwörter in Schlüsselbund, die verwendet wurden, um mindestens einmal anmelden, wenn die App online ist Momentan überprüfe ich nicht die Benutzername-Passwort-Kombination. Wenn ich mehrere Benutzer für ein einzelnes Gerät habe, reicht das Speichern von Kennwörtern nicht aus. Kann also jemand von euch etwas vorschlagen, was ohne Sicherheitsverletzungen möglich ist?Wie können wir eine Benutzername-Passwort-Kombination im Schlüsselbund im verschlüsselten Format speichern
Antwort
Ich schlage vor, Sie das Passwort zu speichern, mit der Anmeldung als Schlüssel. etwas wie: [email protected]/password
.
Sie können den md5
Wert des Passcodes kodieren zur Verbesserung der Sicherheit zu
Sie können NSURLCredential verwenden hängen von dieser link
Shop
NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
[[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:self.loginProtectionSpace];
Erhalten Sie Daten speichern
NSURLCredential *credential;
NSDictionary *credentials;
credentials = [[NSURLCredentialStorage sharedCredentialStorage] credentialsForProtectionSpace:self.loginProtectionSpace];
credential = [credentials.objectEnumerator nextObject];
NSLog(@"User %@ already connected with password %@", credential.user, credential.password);
Sie können es in dem Gerät Schlüsselanhänger speichern, die sparen ausgelegt heikle Informationen. Laden Sie einen Wrapper von diesem Ray Wenderlich tutorial und verschlüsseln das Passwort mit sha512
#import "KeychainWrapper.h"
#include <CommonCrypto/CommonDigest.h>
-(void)createSHA512andSaveToKeychain:(NSString*)unencryptedPasswd {
const char *passwdBytes= [unencryptedPasswd cStringUsingEncoding:NSUTF8StringEncoding];
NSData *passwordData = [NSData dataWithBytes:passwdBytes length:unencryptedPasswd.length];
uint8_t digest[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(passwordData.bytes, passwordData.length, digest);
NSMutableString *encryptedPasswd= [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++) {
[encryptedPasswd appendFormat:@"%02x", digest[i]];
}
// Save the password in the device keychain
KeychainWrapper *keychainWrapper = [[KeychainWrapper alloc] init];
[keychainWrapper mySetObject:encryptedPasswd forKey:(__bridge id)kSecValueData];
[keychainWrapper writeToKeychain];
}
Passwort abzurufen:
// Retrieve the pwd from the device keychain
KeychainWrapper *keychainWrapper = [[KeychainWrapper alloc] init];
NSString *pwd = [keychainWrapper myObjectForKey:@"v_Data"];
Können wir das abgerufene Passwort mit dem richtigen Benutzernamen abgleichen? Ich habe mehrere Benutzer für das gleiche Gerät – iOSManiac
Ja. Wenn Sie mehrere Kennwörter (und Benutzernamen) speichern müssen, benötigen Sie einen anderen Wrapper von Apple. Bitte beachten Sie diesen Link: http: //devmonologue.com/ios/ios/storing-sensitive-information-in-the-iphones-keychain/ Im Wesentlichen initialisieren Sie die keychain-Klasse mit einem benutzerspezifischen Initialisierer mit der Methode "initWithIdentifier:". – Alex
- 1. Wie kann ich eine Variable im lokalen Speicher im verschlüsselten Format speichern und später entschlüsseln?
- 2. können wir telefonieren im iphone?
- 3. Wie speichern Sie die verschlüsselten Daten im numerischen Datenfeld?
- 4. JPG im progressiven Format speichern
- 5. Sollten Daten im Schlüsselbund manuell verschlüsselt werden?
- 6. Können wir KeyValuePair <K,V> im Benutzerprofil speichern?
- 7. Kein Schlüssel im Schlüsselbund Zugriff
- 8. Wie kann ich eine Bilddatei im BMP-Format speichern?
- 9. Android Können wir eine Fußzeile im Hinblick auf eine Seiten
- 10. Wie können wir Zeitinformation hinzufügen, um Bericht im CSV-Format in Jmeter
- 11. Können wir SpanNearQuery im phonetischen Index verwenden?
- 12. Können wir 'dieses' Zeiger im Konstruktor
- 13. können wir null im URL-Parameter übergeben?
- 14. Können wir Apple im Simulator testen
- 15. Können wir Union im Ruhezustand verwenden?
- 16. Warum können wir $ scope.model im Winkelcode referenzieren?
- 17. Speichern von dask dataframe im bcolz-Format
- 18. Können wir Systemaufruf im Kernelraum aufrufen?
- 19. Können wir Helper im Controller Laravel verwenden?
- 20. md5 passwort im md5-format speichern django?
- 21. Ort Formulardaten im mehrfachen Array und speichern im JSON-Format
- 22. Benutzernamen in Schlüsselbund mit anderen Schlüssel speichern
- 23. Warum können wir eine Variable im Switch nicht zweimal definieren?
- 24. Wie können Daten im JSON-Format von handsontable zurückgegeben werden?
- 25. Scrapy: Können die Ausgabedatei im richtigen Format
- 26. Daten im AJAX-Format speichern yii2
- 27. Können wir eine S3-Datei mit Javascript im Browser herunterladen?
- 28. C++: Warum können wir eine Variable im Fall des Schalters
- 29. Können wir im Frühjahr eine Schnittstelle ohne jegliche Implementierung autowire?
- 30. Wie können wir das erste Element einer ClistCtrl hervorheben, die im ICON-Format erstellt wurde?
Do yin alle Benutzer erinnern wollen oder einfach nur die letzten? – CZ54
@bobby: müssen sich an alle Benutzer erinnern – iOSManiac
Also ich empfehle Ihnen, das Passwort zu speichern, mit dem Login als Schlüssel. etwas wie: [email protected]/Passwort. Sie können den md5-Wert des Passcodes codieren, um die Sicherheit zu verbessern. – CZ54