Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12385|Yanıt: 0

[İletişim] 2011 MSSQL Statement Password Validation Security Vulnerability Tutorial

[Bağlantıyı kopyala]
Yayınlandı 26.11.2014 15:47:51 | | |
Uluslararası standart bir veritabanı sorgu ifadesi olarak, SQL ifadeleri çeşitli programlama ortamlarında yaygın olarak kullanılmıştır. Olgun ve istikrarlı bir sistem olarak, kullanıcı giriş ve şifre doğrulaması çok önemlidir. Günlük programlama çalışmalarımda, birçok programcının kullanıcı şifrelerini doğrulamak için SQL ifadesi kullandığını gördüm:
sql="Kullanıcı tablosundan * seç, burada name='"+name+"' ve password='"+password+"'"
İsim ve şifre, kullanıcı tarafından girilen kullanıcı adları ve şifreleridir ve yukarıdaki ifadeler, kullanıcı ile şifrenin meşru ve geçerli olup olmadığını doğrulamak için yürütülür. Ancak analiz sonucunda, yukarıdaki ifadelerde ölümcül boşluklar olduğu görülebilir. Kullanıcı adına şu diziyi girdiğimizde: 111'or'1=1, ardından şifreyi rahatça girdiğimizde, aaaa olarak ayarlıyoruz. Değişken değiştirildikten sonra, SQL ifadesi aşağıdaki dizeye dönüşür:
sql="Kullanıcı tablosundan * seç, burada isim='111' veya '1=1' ve password='aaaa'
Hepimiz biliyoruz ki, select ifadesi sorgu koşullarını değerlendirdiğinde, (ve) işlemlerle karşılaştığında aşağıdaki ve (ve) işlemleri görmezden gelir ve yukarıdaki ifadedeki 1=1 değeri her zaman doğrudur, yani şifreye hangi değer girilirse girsin, yukarıdaki şifre doğrulamasını geçebilir! Bu sorunun çözümü çok basittir ve birçok yöntem vardır; en yaygın kullanılanı, doğrulama yapmadan önce kullanıcının ve kullanıcının girdiği şifrenin meşruiyetini değerlendirmektir; ayrıca tek tırnak işareti ve eşit işaret gibi özel karakterler kullanılmaz.
Yukarıdaki sorunlar, basit görünse de, gerçekten de vardır. Örneğin, internetteki ünlü çevrimiçi oyun "Smiling Proud Jianghu"nun erken versiyonunda böyle bir sorun vardı ve yazar, bu oyunla ilgili güvenlik zafiyeti raporunu okuduktan sonra daha önce yazdığı bazı programları dikkatlice analiz etmiş, bu tür birçok boşluk vardı. Bu gerçekten dikkatimizi çekmeli. Bu aynı zamanda genç programcıların, yazar da dahil olmak üzere, programlama deneyimi ve güvenlik farkındalığı eksikliğini ortaya koyuyor. Aynı zamanda, programcıların programı tasarlarken güvenliğini tamamen göz önünde bulundurmaları gerektiğini, özensiz olmamaları gerektiğini ve görünüşte küçük bir eksikliğin ciddi sonuçlara yol açabileceğini hatırlatıyor.




Önceki:SQL 2005 veritabanı güvenliği ve referans bütünlüğü
Önümüzdeki:2011 MSSQL System Security SA Zayıf Şifre Güvenliği Riski Eğitimi
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com