MachineKey.Protect(Byte[], String[]) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen verileri şifreleyerek veya imzalayarak korur.
public:
static cli::array <System::Byte> ^ Protect(cli::array <System::Byte> ^ userData, ... cli::array <System::String ^> ^ purposes);
public static byte[] Protect (byte[] userData, params string[] purposes);
static member Protect : byte[] * string[] -> byte[]
Public Shared Function Protect (userData As Byte(), ParamArray purposes As String()) As Byte()
Parametreler
- userData
- Byte[]
Korunacak veriler. Bu veriler düz metin olarak geçirilir.
- purposes
- String[]
Verilerin amaçlarının listesi. Bu değer belirtilirse, döndürülen şifre metninin Unprotect(Byte[], String[]) deşifre edilmesi için aynı listenin yöntemine geçirilmesi gerekir.
Döndürülenler
- Byte[]
Şifre metni verileri.
Özel durumlar
userData
Parametre null.
Amaçlar dizisi bir veya daha fazla boşluk girdisi içerir.
Açıklamalar
Bu yöntem, çağıranın düz metin verilerinin Encode şifrelenmesi, imzalanması veya her ikisini birden belirtmesini gerektiren yönteminin yerini alır. Protect yöntemi uygun işlemi gerçekleştirir ve verileri güvenli bir şekilde korur. Bu yöntem tarafından üretilen şifre metni verileri yalnızca yöntemiyle Unprotect deşifre edilebilir.
purposes
parametresi, şifre metnini belirli bir amaca kilitleyebilen isteğe bağlı bir neden listesidir. Bu parametre, bir uygulama içindeki farklı alt sistemler tarafından gerçekleştirilen şifreleme işlemlerini yalıtmanızı sağlar. Kötü amaçlı bir istemci, bir alt sistemin yönteminin sonucunu almamalı ve bunu başka bir alt sistemin Protect Unprotect yöntemine giriş olarak beslememelidir ve bu da uygulama güvenliğini tehlikeye atabilir. purposes
parametresi, korumalı verilerin yalnızca ilk oluşturan bileşen tarafından kullanılabilmesini sağlamaya yardımcı olur. Uygulamalar, her alt sistemin benzersiz purposes
bir liste kullandığına emin olmalıdır.
Örneğin, bir kimlik doğrulama belirtecini korumak veya korumasını silmek için aşağıdaki örneğe benzer bir kod kullanarak yöntemini çağırabilirsiniz:
MachineKey.Protect(..., "Authentication token");
MachineKey.Unprotect(..., "Authentication token");
MachineKey.Protect(..., "Authentication token")
MachineKey.Unprotect(..., "Authentication token")
Uygulamalar parametreyi purposes
dinamik olarak oluşturabilir. Bu durumda, kötü amaçlı bir istemcinin sistemin başka bir bölümü tarafından kullanılan bir belirteçle eşleşen giriş oluşturma riskini en aza indirmek için kullanıcı tarafından sağlanan değerleri sabit bir değerle ("Username:
" + kullanıcı adı gibi) önek olarak ekleyin. Dinamik olarak oluşturulan tüm dizeler sabit dizelerden sonra gelmelidir. Örneğin, belirli bir kullanıcıya bağlı özel bir iletiyi korumak veya korumasını silmek için aşağıdaki örneğe benzer bir kod kullanın:
MachineKey.Protect(..., "Private message", "Recipient: " + username);
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);
MachineKey.Protect(..., "Private message", "Recipient: " + username)
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)
Unprotect yöntemi çağrıldığında, parametresi için purposes
sağlanan değer yöntemine sağlanan değerle Protect aynı olmalıdır. Aksi takdirde işlem bir CryptographicException özel durumla başarısız olur.
Özellik seçeneğine MachineKeyCompatibilityMode.Framework45 ayarlanmasa MachineKeySection.CompatibilityMode Framework45 bile bu yöntem için seçenek için gerekli olan yapılandırma ayarları gereklidir.