Skip to main content

ASP.NET ve Güvenlik

Bu yazımda asp.net ile geliştirilmiş ürünlerde dikkat etmemiz gereken bir takım güvenlik önlemlerinden bahsedeceğim umarım faydası olur kolay gelsin.

Sql Injection


Uygulamaların veritabanı işlemlerinde ORM (Object relational mapping) gibi ara katmanlar kullanılmalıdır. Eğer sql cümlecikleri kullanılacak ise parametrik bir  yapı kullanılarak prepare statement hazırlanması sağlanmalıdır.

Blind Sql Injection

Uygulamaların “View” katmanında veritabanı işlemleri yapılmamalıdır. Bütün veritabanı işlemleri Database Access Layer da olmalıdır.  Örneğin uygulamada Linq kullanılıyor varsayımı ile “View” içerisinde Linq Data Context bile oluşturulmamalıdır.

Auto Complete Enabled

Login sayfasında yer alan textbox’ların “AutoCompleteType” özellikleri disabled yapılarak, paylaşımda olan bir bilgisayarda başka bir kullanıcının başka bir kullanıcı yetkileriyle sisteme login olması engellenmelidir.

ASP.NET Version Disclousere

Uygulamanın Asp.Net versiyonu gizlenmelidir. Gizlenmemsi durumunda hackerlara yol gösterici olabilir. Bu sebeple uygulamanın “web.config” dosyasında aşağıdaki tag kullanılmalıdır.
< httpRuntime enableVersionHeader="false" />

Encrypted ViewState

ASP.Net uygulamalarında viewstate şifrelenmelidir. Bu işlemin uygulama performansını düşüreceği ise unutulmamalıdır. Viewstate’i şifrelemek için ise uygulamanın “web.config” dosyasında aşağıdaki tag kullanılmalıdır.

 <system.web>
      <pages viewStateEncryptionMode="Always" />
    </system.web>


Application Error Message

Uygulama içerisinde handle edilmemiş hata mesajları yapılacak ataklar için yol gösterici olabilir bu sebeple uygulama içerisinde oluşabilecek hatalarda sistem kendini hata sayfasına yönlendirmelidir.
<System.Web>
        <customErrors mode="On" defaultRedirect="~/error/GeneralError.aspx">  
         <error statusCode="403" redirect="~/error/Forbidden.aspx" />       
          <error statusCode="404" edirect="~/error/PageNotFound.aspx" />
           <error statusCode="500" redirect="~/error/InternalError.aspx" />
    </system.web>

Directory Listing

Uygulamanın directory listing özelliği kapatılmalıdır. Bu sebeple “web.config” dosyasında yer alan aşağıda ki tag kullanılmalıdır.
<system.webServer>
    <directoryBrowse enabled="false" />
</system.webServer>

Possible debug parameter found

Gizli hata ayıklama parametreleri kullanılmış olması ,bu parametrelerin kullanarak  bilginin  açığa çıkması sebep olabilir. Bu sebeple “web.config” dosyasında debug ile ilgili hiçbir şey yer almamalıdır. Ayrıca trace özelliği de kapatılmalıdır.

   <compilation debug="false"  />
    <trace enabled="false" localOnly="true">

Clickjacking: X-Frame-Options header missing

Bir X-Frame-Options başlığı dönmediği için Sunucu bu Web Clickjacking riski altında olabilir. Bu sebeple uygulamada yer alan “Global.asax” dosyası içerisinde yer alan “Application_BeginRequest” eventi içerisinde aşağıdaki kod kullanılmalıdır.
     void Application_BeginRequest(object sender, EventArgs e)        {
            HttpContext.Current.Response.AddHeader("x-frame-options", " SAMEORIGIN");
        }

Login page password-guessing attack

Password deneme saldırılılarına karşı bir koruma içermelidir. Örneğin belirli bir deneme sonrası hesap kilitleme gibi ya da captcha eklenmesi gibi.


Comments

Popular posts from this blog

En basit şekliyle Sql Join

WCF Servisinin HTTPS Yayını ve Metotlarına Kullanıcı adı Parola ile Erişim

Giriş Bu yazıda bir wcf servisinin https olarak bir iis üzerinde yayınlanmasını ve de servis metotlarının bir kullanıcı adı ve şifre korunması için neler yapılması gerektiğini bulabilirsiniz. Not: Bu yazıda Wcf servisi bir web application üzerinde yer almaktadır. Gerekli Tool’lar SelfCert.exe:  Servisin yayınlanacağı iis için gerekli ola sertifika oluşturmak    için kullanacağız. winhttpcertcfg.msi:  Command line’dan komut çalıştıracağımız bir exe’dir. Oluşturduğumuz sertifikanın iis’de yer alan application pool tarafından okunabilmesine izin verilmesi için kullanılır. WCF Servis Ayarları Wcf servisi güvenliğini ve verilerinin gizlilğini iki aşamalı bir koruma ile  sağlayacağız: Clientların servis içerisinde yer alan metotlara erişebilmeleri için izin verilen kullanıcı adı ve paraloları bilmesi gerekmektedir. Bu amaçla servis uygulamasına bir adet .cs file ekleyip içerisini Custom Validation da ki gibi dolduralım. Bu işlemden sonra içi...

ASP.NET uygulamalarında WebResource kullanımı (WebResource.axd)

          Web uygulamalarında genellikle resourcelar uygulama içerisine eklenerek sayfalarda path'lari ile çağırılırlar. Bu kullanım açısıdan çok kullanışlı bir yöntem değildir. Şöyleki bazı resourcelarımız her uygulamada olması gereken resourcelardır. Bu resourceları her uygulamaya eklemek etkili bir kullanım değildir. Bunun yerine webresource yöntemiyle istediğimiz resoruceları bir class libary(dll) içerisine koyup, uygulamalarımıza bu dll'i eklememiz daha kullanışlı bir yöntem olacaktır. Bu yazıda da bir image libary dll oluşturmayı ve uygulama içerisinden bu dll içerisinde yer alan resimler çağırmayı adım adım anlatmaya çalışacağım. 1)Solution'ımız 2 adet proje oluşturalım.   - WebApplication(WebApp)   -Class Libary(ResourceLibary) 2)Image libary olarak kullanacağımız dll içerisine image'larımızı ekleyelim. 3)Her bir image'ın üzerine sağ click ile açılan window üzerinden Build Action özelliğini Embedded Resource olarak değiştirelim. ...