10 En Yaygın Programlama ve Kodlama Hataları

  • Owen Little
  • 0
  • 3104
  • 574
reklâm

Aşağıdakiler, geliştiriciler tarafından yapılan en yaygın programlama ve kodlama hatalarından bazılarıdır. Bu hatalar yaygın kesintilere, veri hırsızlığına, izinsiz girişlere ve daha fazlasına neden oldu. Hata Kodları ve Sorun Giderme İçin En İyi 10 Web Sitesi Hata Kodları ve Sorun Giderme İçin En İyi 10 Web Sitesi C, C ++, vb. Gibi bazı dillere özgüdür, ancak bazıları Java, JavaScript, Python vb..

Bunlardan hiçbirini kodunuzda yapmadığınızdan emin olmak için bu listeyi sık sık kontrol etmenizi öneririz. Bu liste yukarıdan aşağıya doğru önem sırasına göre sıralanır.

1. Tampon Taşması

Arabellek Taşması, veriler sonundan sonra bir ara belleğe yazıldığında gerçekleşir. Yazma pozisyonunun hatalı hesaplanması nedeniyle ortaya çıkabilir. Veya uzunluğu kontrol etmeden arabellek içine sürekli yazma. Sebep ne olursa olsun, bu hata en yaygın olanlardan biridir ve büyük istismara yol açmıştır. Bunlardan bazıları Morris Internet Solucanı 6 Dünyayı Değiştiren Bilgisayar Virüsleri 6 Dünyayı Değiştiren Bilgisayar Virüsleri Dün, tarihin en zarar verici yüksek profilli bilgisayar virüslerinden bazılarına göz attık ve bugün bazılarını inceleyeceğiz. bunun yerine daha karanlık olanlar. Dönem “virüs” kötü amaçlı yazılımlara bağlanmadı… 1988'de, W32 / Nimda solucan 2001'de ve Sendmail 2003'te yanıldı.

Bir C Örneği:

karakter dizisi [6] = "merhaba"; strcat (dizi, ", joe"); / * <- This line causes a buffer overflow. */

Resim Kredisi: Cyber4All @Towson

2. SQL Enjeksiyonu

SQL Enjeksiyonu SQL Enjeksiyonu Nedir? [MakeUseOf Açıklar] Bir SQL Enjeksiyonu Nedir? [Açıklamayı Yapın] İnternet güvenliği dünyası açık portlar, arka kapılar, güvenlik delikleri, Truva atları, solucanlar, güvenlik duvarı güvenlik açıkları ve bizi her gün ayak parmaklarımızda tutan bir dizi başka sorunla karşı karşıya. Özel kullanıcılar için…… SQL komutlarını kullanıcı girişine enjekte etmenin bir yöntemidir, öyle ki bu komutlar doğrudan veritabanı tarafından yürütülür. Bu, saldırganın, tabloları silmek, veritabanlarını bırakmak, veri çalmak ve çok daha fazlasını yapmak gibi kötü niyetli eylemler gerçekleştirmesini sağlar..

SQL Injection saldırılarının başarılı olmasının kilit bir nedeni, kullanıcı girişini işleyen uygulama yazılımının yürütme için veritabanına geçirmeden önce giriş üzerinde yetersiz kontroller ve doğrulama işlemleri gerçekleştirmesidir..

Java Örneği:

// Aşağıdaki, SQL enjeksiyonlu bir parametre değeridir. String username = "joe '; kullanıcı adından'%"; Bağlantı con =…; // veritabanına bağlantı oluştur // Bu ifade çalıştırıldığında, tüm kullanıcılar veritabanından silinir. con.createStatement (). execute ("güncelleme kullanıcısı günlüğü set_in = 1; burada username = '" + kullanıcı adı + "'"); 

3. İşletim Sistemi Komutu Enjeksiyonu

İşletim Sistemi Komutu Enjeksiyonu, kullanıcı tarafından belirtilen girdi, doğrudan doğruya işlem yapılmadan uygulama tarafından çıkarılması için doğrudan işletim sistemine teslim edildiğinde ortaya çıkar. Bu tür bir işlem, bir uygulama tarafından işletim sistemi üzerinde mevcut bir komutu kullanmak için kullanılabilir. Uygulama, kullanıcı girişi doğru bir şekilde onaylamadan geçtiğinde, saldırganın kötü niyetli komutları yürütmek için akıllı yapılar kullanmasının önünü açar. Bu komutlar, örneğin, dosyaları silmek, verileri çalmak, dosyalar üzerindeki izinleri değiştirmek ve daha fazlası olabilir..

4. Tamsayı Taşması veya Silme Çevresi

Bir Tamsayı Bilgisayar Programcılığının Temelleri 101 - Değişkenler ve DataTypes Bilgisayar Programcılığının Temelleri 101 - Değişkenler ve DataTypes Önce Nesneye Yönelik Programlama hakkında biraz bilgi verdim ve konuştum; dile özgü olmayan bir şekilde programlama. Bu… Taşma hatası, sığacak olandan daha büyük bir değeri bir integral türüne kaydetmeye çalıştığınızda oluşur. Bu olduğunda, daha büyük değer kesilir ve işlem öngörülemeyen bir sonucu depolar. Örneğin, 2 baytlık bir imzasız kısa, maksimum 65535 değer saklayabilir. Şimdi, 65530 ve 10 gibi iki kısa değer eklendiğini ve sonucun kısa sürede saklandığını hayal edin. Sonuç (65545) kısa devre yapmaz, bu da kısma sonucunda hedefte öngörülemeyen bir miktar değer bırakır. Daha sonra bu değeri başka bir işlemde (dizi dizini gibi) kullanırken, tahmin edilemeyen sonuçlarla sonuçlanırsınız..

Bir C Örneği:

kısa a = 65530, b = 10; kısa c = a + b; // bilgisayarımda c beklenmeyen bir değere sahip: 4 

5. Dizi Dizininin Yanlış Doğrulanması

Yazılımda karşılaşılan diğer bir yaygın hata Dizi Dizininin Yanlış Doğrulanması. Bir diziye erişilirken ortaya çıkar. Diziler ve Listeler Python'da Nasıl Çalışır? Diziler ve Listeler Python'da Nasıl Çalışır? Diziler ve listeler programlamada en faydalı veri yapılarındandır. dizinin sınırları dışında kalan bir dizini kullanarak. Programın geçerli veri sınırları dışındaki bir yere eriştiğinizde, bir bellek erişim hatası ile karşılaşırsınız (bölümleme ihlali olarak da bilinir). Hafıza konumu veri sınırları içinde ancak dizinin dışında kaldığında, bu tür konumlara yazarken hafıza bozulmasına bakıyorsunuzdur..

Bu tür hatalar C ve C ++ ile daha yaygındır, ancak Java, JavaScript, Python, vb. Gibi otomatik bellek yönetimi olanlar da dahil olmak üzere herhangi bir dilde ortaya çıkabilir. Bu tür hataların yazılımda hafifletilmesinin tek yolu tarafınızdan programcı, kodlama sırasında yeterli özen göstermek.

6. Kaynakları Sınırsız Olarak Tahsis Edin

Bu dillerdeki tüm bellek yönetimi manuel olduğundan, bellek ayırma C ve C ++ 'da çok yaygındır. Tahsis edilen boyutun uygun şekilde doğrulanması olmadan hafızanın tahsis edilmesi tahsisin başarısız olmasına neden olabilir. Bu tahsisin sonucu kontrol edilmediğinde ve doğrudan kullanıldığında, felaket için bir tarifiniz vardır..

Bu tür hatalar, dizileri ayırırken Java, JavaScript ve Python gibi manuel bellek yönetimi olmadan da mümkündür. Bu nedenle, bu dillerde dizi tahsis ederken uygun özen gösterilmelidir..

Bu hatanın ortaya çıkmasının bir başka olasılığı, dosya denetleyicileri veya bağlantı tutamaçları gibi başka kaynaklar uygun şekilde denetlenmeden oluşturmaktır. Bunları kullanmanız bittiğinde bu kaynakları uygun şekilde kapatmamak, bu kaynak sınırlarına ulaşmanın en yaygın yoludur.

7. Süresi dolmuş Pointer Dereference

C ve C ++ gibi dillerde, işiniz bittiğinde bellek serbest bırakılabilir. Bir işaretçi kullanma Programcılar için İşaretçilere Giriş Programcılar için İşaretçilere Giriş Programın farkında olsanız da olmasanız da, kullandığınız programların büyük kısmı işaretçilerden bir şekilde yararlanır. Bir programcı olarak, işaretçilerin nasıl çalıştığını anlamanız gerekir. Zaten serbest bırakılmış olan bu hafıza bloğuna bir hatadır. Bu tür hatalar ayrıca büyük kesintiler nedeniyle haberlerde de yer aldı; bu nedenle, bu tür bir hatanın kodunuzda olmadığını doğrulayın..

8. Boş İşaretçi Dereference

Bir işaretçi, uygun şekilde başlatılmadan önce (veya bellek serbest bırakıldıktan sonra) boş bir değere sahip olabilir. Böyle bir işaretçinin referansının kaldırılması boş bir işaretçi hatasına neden olur (çağrılan NullPointerException Java’da). C, C ++ ve Java'da çok yaygındır ve diğer dillerde de kesinlikle mümkündür. Bu tür bir hatayı önlemek için kodunuza yeterli özen göstermelisiniz..

Resim Kredisi: J.T.Presta

9. Eksik Başlatma

Yerel değişkenler, bir işlev (veya bir blok) içinde bildirilen ve işlev sonunda var olmayı kesen değişkenlerdir. Bu değişkenler yığında tahsis edilir ve ilk kez bildirildiğinde rasgele çöplere sahip olurlar. Bir programcı olarak, ilan edilir edilmez bu değişkenlere uygun bir değer vermek sizin görevinizdir. Bu tür başlatma işlemlerinden önce bunları kullanmak, Eksik başlatma hata ve kesinlikle bir çarpma (veya daha yıkıcı bir şey) ile sonuçlanacaktır.

Bir C Örneği:

int pos; char buffer [] = "merhaba dünya"; // bu satır çöp basabilir ve / veya pos başlatılmadığından programın çökmesine neden olabilir. printf ("% d konumundaki karakterin değeri:% c \ n", pos, buffer [pos]); 

10. Kırık veya Riskli Kriptografik Algoritma

Şifreleme Dünyası Şifreleme Nasıl Çalışır, Gerçekten Güvenli mi? Şifreleme Nasıl Çalışır ve Gerçekten Güvenli midir? sürekli evrim geçiriyor. Bugün kabul edilebilir olan, yarın artık kabul edilebilir olmayabilir. Bu, bugün yıllar süren bilgisayar işlemlerinin yarın dakikalar alabileceği bilgisayarların gücünün artmasından kaynaklanıyor olabilir. Veya birisi, bu algoritmayı işe yaramaz hale getiren belirli bir algoritmayı kırmanın yeni bir yolunu bulur. Bu nedenle, kullandığınız algoritmalarda güvenlik açıkları ve saldırılar tespit edilirse, şifreleme alanındaki gelişmelerden sürekli olarak uzak durmanız ve kodunuzu güncellemeniz gerekir (hala kullanılıyorsa).

Örneğin, bir karma algoritması olan SHA-1 artık hesaplama karmaları için önerilmez. 2005 yılında, bu algoritmaya karşı saldırılar keşfedildi ve SHA-2 veya SHA-3 önerildi. Bu nedenle, kodunuz herhangi bir noktada SHA-1 kullanıyorsa, yazılım hala kullanılıyorsa, önerilen olanla değiştirmeniz gerekir. Aksi halde, başvurunuzun saldırıya açık olma riskini taşırsınız..

özet

Bu makaledeki en yaygın programlama ve kodlama hatalarından birkaçını ele aldık. Onlardan kaçındığınızdan emin olmak için sık sık bu listeye başvurabilirsiniz..

Web sitenizin veya uygulamanızın büyük ölçüde kesilmesine yol açabilecek bu veya diğer hatalarla karşılaştınız mı? Aşağıdaki yorumlarda bize bildirin.

Resim Kredisi: ajfile / Depositphotos




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.