Respond needs javascript to run. To find out more click here
Asp.net » Sayfa 5 » Serdar Demir
RSS
 

Archive for the ‘Asp.net’ Category

Asp.net Güvenliği web.config dosyasını şifreleme

02 Nis

Webconfig dosyasi web uygulamamızın ayarlarinin ve bilgilerinin tutuldugu bir xml dosyasıdır. IIS üzerinde yaptıgımız değişiklikler örneğin bir connection string ekleme, user tanımlama, application pool belirleme(bunu bi ara anlatcam iis 7 versiyonunu) vs iis in arayuzunu kullanarak oluşturduğumuz ayarlar aslında arka planda webconfig e yazılır. Webconfig, machine config, globalasax veya dll lerinizin bulunduğu bin klasörünüz bunlar aslında asp.net platformu tarafından güvenlik altına alınana dosyalardır okuma yazma izini vermek pek mantıklı değildir. Örneğin bin klasörüne okuma ve yazma izni vermek :)

Neyse konumuza dönelim bu varsayılan güvenlik önlemleri bazen yetersiz kalabiliyor. Bir web uygulamasını hacklemenin çeşitli yöntemleri var örneğin css ile webconfige mudahele edilebiliyordu ve microsoft bu açığı yamadı :)

webconfig dosyanın başkalarının eline geçerse uzak serverınıza bağlanabilir. roller ile oynanabilir herşey yapılabilir aslında :)

Webconfig dosyasının varsayılan guvenligini bu dosyayı şifreleyerek arttırabiliriz. 

Visual studio tools / command promtu açıyoruz.

Web projemizin olduğu kök dizine gidiyoruz. (cd C:\Users\serdar\Documents\Visual Studio 2008\Projects\WebApplication35\WebApplication35 gibi)

daha sonra aspnet_regiis komutunu çalıştıracağız.

aspnet_regiis pef appSettings.

bu işlem sonunda webconfig dosyamızın içerişi aşağıdaki gibi:

</configSections>
<appSettings configProtectionProvider=”RsaProtectedConfigurationProvider”>
<EncryptedData Type=”http://www.w3.org/2001/04/xmlenc#Element”
xmlns=”http://www.w3.org/2001/04/xmlenc#”>
<EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#tripledes-cbc” />
<KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>
<EncryptedKey xmlns=”http://www.w3.org/2001/04/xmlenc#”>
<EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#rsa-1_5″ />
<KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>XYHbkmcbw4I1Yc+NXFXveMLVoyiNpSvya0xMg6vr2aE5kIWq+jiymfk5d7yE5dnttfVT9udXShlmDHC4psetcTXDDnU1eflOYGGiaX7pzu9He6nxxRaQNbJQOatSHCD3GeoRYMIT+OznNNeEwaOaeBwOjYibTPcfDA7lNtjSu/E=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>Xw8g2KGmz7BtcA+Ym4DH0gF1Soba+Pd2</CipherValue>

</configSections> <appSettings configProtectionProvider=”RsaProtectedConfigurationProvider”>  <EncryptedData Type=”http://www.w3.org/2001/04/xmlenc#Element”   xmlns=”http://www.w3.org/2001/04/xmlenc#”>   <EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#tripledes-cbc” />   <KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>    <EncryptedKey xmlns=”http://www.w3.org/2001/04/xmlenc#”>     <EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#rsa-1_5″ />     <KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>      <KeyName>Rsa Key</KeyName>     </KeyInfo>     <CipherData>      <CipherValue>XYHbkmcbw4I1Yc+NXFXveMLVoyiNpSvya0xMg6vr2aE5kIWq+jiymfk5d7yE5dnttfVT9udXShlmDHC4psetcTXDDnU1eflOYGGiaX7pzu9He6nxxRaQNbJQOatSHCD3GeoRYMIT+OznNNeEwaOaeBwOjYibTPcfDA7lNtjSu/E=</CipherValue>     </CipherData>    </EncryptedKey>   </KeyInfo>   <CipherData>    <CipherValue>Xw8g2KGmz7BtcA+Ym4DH0gF1Soba+Pd2</CipherValue>

Şifreleme işleminden sonra uygulamamızda herhangi bir problem olmadan çalışacaktır

Şimdi şifreledigimiz webconfigi geri çözelim

ayni kodu yazıyor pef yi pdf ile değiştiriyoruz (e=encrypt || d=decrypt)

 
1 Comment

Posted in Asp.net

 

ASP.net App_offline.htm kullanımı

25 Mar

Bugun karşılaştıgım bir problem yuzunden küçük bi araştırma yaptım ve paylaşmak istedim proje geliştirdiğimiz ve sürekli sistem çalışan bir sistem üzerinde değişikilk yapmam gerekiyor ve bu değişiklikler sırasında  Asp.net in meşhur bir hata sayfası vardir :)

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>

kullanıcı sürekli o sayfa ile karşı karşıya kalıyordu site üzerinde bir değişiklik yapacağınız zaman server ın kok dizinine App_offline.htm adında bir html dosyası upload ediyoruz (yada serverda dursun adını degiştirin :) ) sayfanın tasarımını ben aşağıdaki gibi yaptım

Artık kullanıcılarınız siz düzeltmeleri yaparken bu sayfa ile karşılaşacaklar.  Bu arada bu işlemi kod yazarak yapmak isteyen arkadaşlar HttpModule veya global asax application start dosyası ile kendi oluşturdugunuz bir cms sistemi ile de çözebilirsiniz.

 
No Comments

Posted in Asp.net

 

Store Procedure out parametresi kullanımı

25 Mar

Her ne kadar şu aralar entity framework ile uğraşşsam da store procedure de kullandığım yerler oluyor :) Out parametresi çok kullanışlı bir zellik anlatmadan geçemeyeceğim :)

Bir forum uygulamasında uye kayıt yaparken birden fazla tabloya birbiri ile id  ve unique key uzerinden senkronize bir şekilde kayıt girmem gerekiyordu (User-> Profile->Session->Member vs.)

Örneğin bir üye kayıt edelim ve o kayıt sonucu id yi isteyelim ve o id ile sesion kaydedelim. Ben direk output parametresinin eklenmesinden başlıyorum .

var paramUserKey = new SqlParameter(“UserKey”, SqlDbType.UniqueIdentifier);
paramUserKey.Direction = ParameterDirection.Output;
paramUserKey.Value = null;
komut.Parameters.Add(paramUserKey);

komut.ExecuteNonQuery();

Şimdi yukarıdaki kod parçası ile bana guid bir kayıt donecek şimdi de store procedure tarafına bakalım.
@UserKey nvarchar(64) = null out

IF @UserKey IS NULL
SET @UserKey = NEWID()

// Bu şekilde bir guid donecek eğer id dndürmek isterseniz @@identity ataması yapmanız gerekiyor.

Kodu management studio ya da test ediyoruz .

USE [Forum]
GO

DECLARE    @return_value int,
@UserKey nvarchar(64)

EXEC    @return_value = [dbo].[yaf_prov_createuser]
@UserKey = @UserKey OUTPUT

SELECT    @UserKey as N’@UserKey’

SELECT    ’Return Value’ = @return_value

GO

result: 44A69C35-F879-4195-BCF0-F31F15FA6A0D