Programatik olarak SQL Server gibi bir veri kaynağına bağlanma ihtiyacımız olduğunda veri kaynağına ait bağlantı bilgilerinin tutulduğu objelere Connection String yani bağlantı cümleleri diyoruz. Connection String içinde SQL Servera bağlanmak için gereken ve hassas(sensitive) veri dedğimiz kullanıcı adı ve password bilgilerini de barındırabilmektedir. Bu nedenle Connection String oluştururken hassas verilerin güvenliğinin sağlanması için Persist Security Info ve Integrated Security adında iki özelliğin(property) bilinmesi gerekiyor. Çok sık karıştırılan bu özellikleri kısaca açıklayalım.
Integrated Security: SQL Server gibi bir veri kaynağına bağlanırken kullanacağımız güvenlik modelinin seçimini temsil etmektedir. Yani daha teknik bir ifadeyle SQL server tarafındaki SQL Server Authentication veya Windows Authentication seçeneklerinden hangisinin kullanılacağına karar vermektedir. Bildiğimiz gibi Integrated Security özelliğini true olarak set edersek Windows Authentication kullanılacaktır ve doğal olarak oturum açan windows kullanıcısının yetkileri geçerli olacağı için Connection String oluşturduğumuzda herhangi bir kullanıcı adı veya şifre girmek zorunda kalmayacağız. SQL Server tarafında da güvenlik için önerilen Windows Authentication seçeneğinin kullanılmasıdır lakin client ile SQL serverın aynı domainde olmadığı ya da oratmda herhangi bir domain olmadığı durumlarda SQL Server Authentication kullanmak ve dolayısıyla Integrated Security değeri false olarak set etmek zorunda kalıyoruz. Bu durumda Connection string içinde açıkca kullanıcı adı ve şifre değerlerinin belirtilmesi de gerekiyor.
Bir diğer güvenlik seçeneği olan Persist Security Info özelliği ise SQL server Authentication kullanıldığında Connection string bilgisinde hassas veri olan şifre bilgisinin kalıcı olarak tutulup tutulmayacağını belirtmektedir. True,false,yes veya no değerlerinden birini alabilen bu özelliğe true veya yes değerlerinden biri atanırsa şifre bilgisi connection objesi üzerinden elde edilebilmektedir. Bu da kodun güvenliği açısından önerilmeyen bir durumdur. Her ne kadar varsayılan değeri false olsa bile SQL server Authentication kullanılan durumlarda bu özelliğe false değerinin atanması güvenlik için önerilmektedir.
Şimdi Persist Security Info özelliğinin bize sağladığı yararı örnek üzerinde görelim. Aşağıdaki gibi SQL server Authentication ile SQL Servera bağlanan kısa bir kod yazıp Conenction açıldıktan sonra Connection nesnesinin ConnectionString özelliğinin değerini inceleyelim.
İlk olarak açtığımız bir Console uygulamasında Persist Security Info özelliğine true değerini atayalım ve ekrana aşağıdaki gibi bir connection nesne ConnectionString özelliğinin değerini yazdıralım.
Yukarıdaki kodumuzu çalıştıralım. Ekran görüntümüz aşağıdaki gibi olacaktır.
Şimdi Connection string objemizdeki Persist Security Info özelliğine false değer atayıp aynı kodu çalıştırıp ekran görüntüsüne bakalım.
Yukarıdaki kodumuzu çalıştırdığımızda karşımıza aşağıdaki gibi hassas bir veri olan şifre bilgisinin yazdırılmadığı bir ekran gelecektir.