Parametreler çok Sql enjeksiyonları önlemek için yeterli mi?
SQL sorgu parametreleri kullanma hakkında iyilik üzerinde meslektaşlarıma ve burada hem vaaz oldum, özellikle .NET uygulamaları. Hatta SQL enjeksiyon saldırılarına karşı dokunulmazlık vererek, onları vaat edecek kadar ileri gittim.
Ama eğer bu gerçekten doğru mu diye merak etmeye başladım. Parametrik sorgu karşı başarılı olacağı bilinen herhangi bir SQL enjeksiyon saldırıları var mı? Örneğin sunucu üzerinde arabellek taşmasına neden olan bir dize gönderir misiniz?
Tabii ki bir web uygulaması güvenli olduğundan emin olmak için yapmak gereken bazı şeyler var (dezenfektan kullanıcı girişi falan gibi) ama şimdi SQL enjeksiyonu düşünüyorum. Benim birincil veritabanları oldukları için MsSQL 2005 ve 2008 saldırılar özellikle ilgileniyorum, ama tüm veritabanları ilginç.
Edit: parametreleri ile ne demek istediğimi açıklamak İçin ve parametrik sorgular. Kullanarak yani parametreler "" dizesinde sql sorgu binanın yerine. değişkenleri kullanarak< / ^ br . Bu işi onun yerine:
SELECT * FROM Table WHERE Name = 'a name'
Bizim işimiz bu:
SELECT * FROM Table WHERE Name = @Name
ve sonra da sorgu / komut nesnesi @Adını parametre değerini ayarlayın.
CEVAP
Yer tutucularyeter enjeksiyonları önlemek için. Hala tampon taşmaları için açık olabilir, ama bu bir SQL enjeksiyon (saldırı vektörü SQL sözdizimi ancak ikili olmaz) saldırı tamamen farklı bir lezzet. Geçirilen parametreleri düzgün kaçmış olacak beri, "" SQL. canlı gibi muamele edilecektir verileri aktarmak için bir saldırgan için bir yolu yok
Tutucular içindeki fonksiyonları kullanamazsınız, ve ve dize hazır olarak kaçtı kote oldukları için sütun veya tablo isimleri yer tutucu olarak kullanabilirsiniz.
Eğer kullanırsanızparametreleribir parçası olarakdize birleştirmedinamik sorgu içinde, dizeleri kaçtı olmayacak ama değişmez çünkü hala enjeksiyon karşı savunmasız. Parametreleri (integer) için diğer türleri kullanarak güvenli.
Bu, eğer giriş ** 4, gibi bir şey değerini ayarlamak için kullanıyorsanız o zaman birileri sadece kendilerini yöneticiler yapabilir sisteminizde dedi ve hepsi ücretsiz. Ama bu sadece temel giriş doğrulama, ve SQL enjeksiyon ile bir ilgisi yok.
PDO hazırlanmış deyimleri SQL enjeksiy...
Nasıl JSP dosyaları Java kod önlemek i...
Nasıl MUAYENE dosyası tersine mühendis...
Nasıl bir düğmeye tıklandığında bir il...
Nasıl form gönderme düğmeleri önlemek ...