Video: Dll Injection ve Program Fonksiyonlarına Erişmek 2024
Kod enjeksiyonundan kaçınmanın ilk kuralı C ++ programlarına asla, hiç kullanıcı girdisinin genel amaçlı bir dil yorumlayıcı tarafından işlenmesine izin vermez. SQL enjeksiyonuyla ortak bir hata, programın kullanıcı girdisini her zaman kabul edilebilirmiş gibi kabul etmesi ve bunu bir SQL sorgusuna ekleyerek işleme için veritabanı motoruna gönderdiği bir sorundur.
Örneğin, bir tarihte kullanıcı girişi isteyen bir program saldırıya uğramış olabilir. En güvenli ve kullanıcı dostu yaklaşım, kullanıcıya başlangıç ve bitiş tarihlerini seçebileceği bir takvim grafik sunmaktır. Program daha sonra kullanıcının ne tıkladığına dayalı bir tarih yaratacaktır.
Bu mümkün değilse, program, girdinin bir tarih için doğru biçimde olduğunu kontrol etmek için girişi dikkatlice kontrol etmelidir, bu durumda yyyy / mm / dd < - diğer bir deyişle, dört basamaktan sonra bir eğik çizgi izleyen iki basamaklı ve eğik çizgi ve son olarak iki basamak daha basamaklı. Başka hiçbir şey kabul edilebilir girdi olarak düşünülmemelidir. Bazen format hakkında o kadar özel olamazsınız. Kullanıcıya esnek metin girmesine izin vermeniz gerekirse, en azından özel karakterlerden kaçınabilirsiniz. Örneğin, tek veya çift tırnak kullanmadan SQL kod enjeksiyonu yapmak neredeyse imkansızdır.
// düz ASCII boyut_türü kapalı = s olduğundan emin olmak için bazı dize 'lerin denetimini yapın. find_first_not_of ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_"); Bu kod, A'dan Z'ye, a'dan z'ye kadar olan karakterlerden biri olmayan bir karakter için
s
dizgesini arar: {cerr << "errorn";} , 0 - 9 veya altçizgi. Böyle bir karakter bulursa, program girişi reddeder.