SORU
4 Mayıs 2009, PAZARTESİ


Nasıl Sistem için SecureString dönüştürmek için.Dize?

Bir Sistem oluşturarak SecureString unsecuring hakkında tüm rezervasyonları.Dize dışındakenaranasıl yapılabilir?

Nasıl oluyor da sıradan bir Sistem dönüştürebilirsiniz.Güvenlik.Sistem SecureString.Dize?

SecureString aşina olan birçok kişi asla sıradan bir SecureString dönüşüm gereken cevap vereceğinden eminim .Çünkü NET bir dize tüm güvenlik korumaları kaldırır.Biliyorum. Ama şu anda benim program zaten sıradan dizeleri ile her şeyi yapar ve güvenliğini geliştirmek için çalışıyorum ve bana bir SecureString döndüren bir API kullanarak olacağım öyleyimdeğilbenim güvenliğini artırmak için kullanmaya çalışıyor.

Mareşal farkındayım.SecureStringToBSTR, ama bu BSTR alıp bir Sistem yapmak için nasıl bilmiyorum.Dize dışında.

İçin o kim olabilir talep nedenini bilmek istiyorum şimdiye kadar bunu yapmak için, ben alıyorum, bir şifre, bir kullanıcı ve gönderme gibi bir html Formu göndermek için günlük kullanıcı bir web sitesi. Yani... bu gerçekten yönetilen, şifresiz tamponlar ile yapılmalıdır. Eğer yönetilmeyen, şifresiz tampon erişebilir miyim diye bile bayt bayt akışı parolayı yol boyunca güvenliğini sağlayan bir ağ akışı ve umarım yazmaya devam yapabileceğimi düşünüyorum. Bu senaryolardan en azından bir cevap bekliyorum.

Teşekkürler!

CEVAP
4 Mayıs 2009, PAZARTESİ


Interopservices-API: Marshal-class kullanın

String SecureStringToString(SecureString value){
  IntPtr valuePtr = IntPtr.Zero;
  try{
    valuePtr = Marshal.SecureStringToGlobalAllocUnicode(value);
    return Marshal.PtrToStringUni(valuePtr);
  }
  finally{
    Marshal.ZeroFreeGlobalAllocUnicode(valuePtr);
  }
}

Eğer yönetilen bir string nesnesi oluşturma önlemek istiyorsanız, ham veri Marshal.ReadByte(IntPtr, Int32) kullanarak erişebilirsiniz:

void HandleSecureString(SecureString value){
  IntPtr valuePtr = IntPtr.Zero;
  try{
    valuePtr = Marshal.SecureStringToGlobalAllocUnicode(value);
    for(int i=0;i<value.Length;i  ){
      short unicodeChar = Marshal.ReadInt16(valuePtr, i*2);
      // handle unicodeChar
    }
  }
  finally{
    Marshal.ZeroFreeGlobalAllocUnicode(valuePtr);
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • huyked

    huyked

    28 Mart 2008
  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008