Soru “&” Karakteri, web.config dosyasında saklanan şifreleri kırıyor.


IIS 7.5 üzerinde çalışan bir ASP.NET MVC3 C # .NET uygulaması var.

Bir dosya paylaşımına belgeleri okumak / yazmak için kodumuzda Taklit ettiğimiz bir Windows NT hizmet hesabımız var. Kullanıcı kimliği kodda derlenmiştir ve servis hesabı şifresi web.config dosyasında saklanır.

Parola bir ampersan karakteri içeriyor (örn .: p&ssword).

Bu siteyi kırdı. Siteye erişirken şu hatayı aldık: "Üzgünüz, isteğiniz işlenirken bir hata oluştu".

İşte şifreyi kullanan kod:

    var password = ConfigurationManager.AppSettings.Get(Common.SVC_PWD);

    bool isSuccess = LogonUser(
        @"my_svc_acct",
        "my.domain.net",
        password,
        LOGON32_LOGON_NEW_CREDENTIALS,
        LOGON32_PROVIDER_DEFAULT, ref token
    );

Bu neden sitenin kırılmasına neden olur?


44
2018-01-30 15:43


Menşei


Sanırım web.config bir XML belgesi olarak ele alındı ​​- burada bakın stackoverflow.com/questions/3824351/... - Scott Selby
İlk tahminim, yapılandırma dosyasındaki şifrenin yanlış olmasıdır. Ama GetLastError'u aramayı denediniz mi?msdn.microsoft.com/en-us/library/windows/desktop/...) hatanın ne olduğunu görmek için? Ayrıca, bir yapılandırma dosyasında bir açık metin şifresini saklamanın iyi bir fikir olmadığını eklemeliyim; En azından şifreleyim. - Jeff Siver


Cevaplar:


Parolayı doğru şekilde kodlamadığınızdan şüpheleniyorum. web.config dosya. Bunu hatırla web.config XML dosyasıdır, bu yüzden varlıklar kodlanmalıdır.

Yerine

my&password 

Deneyin

my&password

Gibi siteleri kullanabilirsiniz FreeFormatter.com XML dizeleri kaçmak / unescape.


84
2018-01-30 15:45



Herkes URL için nasıl kullanıldığında dikkatli olun! "& Amp;" ile URL "&" ile URL DEĞİLDİR. URL adresiniz için uygulamadan önce kodu ile değiştirmeyi unutmayın. Bu tuzağa düştüm ve sebebini bulmadan tüm gün boyunca bir böcekle uğraştım. - Mr.B


Kodlanmış değeri web.config dosyasına koymanız gerekecektir. Bunu çektikten sonra düzgün bir şekilde okuyacaktır, ancak yapılandırma dosyasında şifrelenmesi gerekir.

Örneğin:

Parola: your&password  (beklediğiniz şey)

Kodlanmış sürümü: your&password  (web.config dosyasında ne saklanmalıdır)

Değeri okuyan sarıcı yönteminiz, your&password.

Tüm 'özel' karakterler için bunu yapmanız gerekir:

< = &lt;
> = &gt;
" = &quot;
' = &apos;
& = &amp;

38
2018-01-30 15:47



VS2015 kullanıyorum nerede & amp; veya her ikisi de aynı sonucu verir: "& amp;" ama istiyorum "&" - Purushoth


CDATA kullanarak web.config dosyasında şifreyi saklayın

şifreyi bununla değiştirin

<![CDATA[MyPassw&rd]]>

1
2018-01-30 15:49



Çalışmaz: bir özellik değeri içinde bir CDATA bölümü koyamazsınız. - Joe
Joe doğru, bu bir yapılandırma dosyasında bir özellik değeri olarak kullanılamaz - user99513