Aracılığıyla paylaş


MachineKey.Protect(Byte[], String[]) Yöntem

Tanım

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.

Şunlara uygulanır