BBC'de yayımlanan bir habere göre en kötü programlama hatalarından 25 tanesi ilan edilmiş. Bu liste US National Agency yardımı ile oluşturulmuş ve tüm Amerikan BT endüstrisi bu hatalar hakkında hemfikir. Aralarında Microsoft ve Symantec gibi kuruluşların yer aldığı 30'dan fazla firma bu dökümanı yayınlamış. Bakalım nelermiş bu hatalar (çeviriden kaynaklanan hatalar için şimdiden özür dilerim).

1- CWE-20: Kullanıcı girdilerinin yanlış doğrulanması
2- CWE-116: Çıktıların doğru şifrelenmemesi yada değiştirilmemesi
3- CWE-89: SQL dilinin yapısının bilinmemesi
4- CWE-79: HTML kodlarının sayfa akışı içinde doğru kullanılamaması
5- CWE-78: İşletim sisteminin komut yapısının anlaşılamaması
6- CWE-319: Hassas verinin normal text olarak taşınması
7- CWE-352: Siteler arası isteklerde session çalınması (corss-site forgery)
8- CWE-362: Race Condition (ne olduğunu anlamadım)
9- CWE-209: Hata mesajlarında alt yapının ele verilmesi
10- CWE-119: Matematik işlemlerinde mevcut hafıza dışına taşılması
11- CWE-642: State verilerinin harici kontrolü
12- CWE-73: Dosya ismi yada dizinlerin harici kontrolü
13- CWE-426: Güvensiz arama yolu
14- CWE-94: Kod üretici sistemlerin yetersiz denetimi
15- CWE-494: Ne olduğu bilnmeyen kodların indirilip kontrolsüz kullanılması
16- CWE-404: Kaynakların zamansız ortadan kaldırılması veya serbest bırakılması
17- CWE-665: Gereksinimlerin yetersiz karşılanması
18- CWE-682: Hatalı hesaplamalar
19- CWE-285: Erişim kontrollerinin ve kullanıcı haklarının yetersiz kontrolü
20- CWE-327: Zaten kırılmış bir şifreleme algoritması kullanmak
21- CWE-259: Kod içinde direk olarak şifre kullanmak
22- CWE-732: Yanlış atanan kullanıcı hakları
23- CWE-330: Aslında random olmayan random veri kullanmak
24- CWE-250: Gereksiz erişim hakları ile çalışan kod
25: CWE-602: Sunucu tarafında kontrol edilmesi gereken güvenlik unsurlarının istemci tarafında kontrolü

Ben sanırım bu hataların pek çoğunu yaptım zamanında. Tabii zaman geçtikçe ve deneyim arttıkça azalıyor. Kimi zaman farkedilmeyen bu hatalar günü gelidiğinde firmaya hem para hemde prestij kaybettirebilir.

Siz hangileri  yaptınız? Yada listeye eklemek istedikleriniz var mı?

Technorati Tags:

Reklamlar


Bu girdiye atılan yorumlar:

# re: En Kötü 25 Programlama Hatası

paylaşımınız için tşk ederim.

Hayalet tarafından  1/23/2009 10:55 AM tarihinde atılmıştır.
# re: En Kötü 25 Programlama Hatası

Güzel bir yazı/derleme olmuş, elinize sağlık. Benim edindiğim bazı deneyimler;

-Arka mimariyi hissetmeden kod yazmak (JIT, CLR, IL, VM)
-Formlar ve fonksiyonlar arasında fazlaca global değişkenler kullanmak
-Overload fonksiyonların dozunu kaçırmak, dolayısı ile hangi fonksiyonu ne zaman kullanacağını unutmak
-İç içe fazlaca if deyimi kullanmak
-Warning içeren kodları görmezden gelmek
-İş detayını anlamadan kod yazmak, kodu yazıp geçmek...
-...

Not: Bu arada race condition'ı da izninizle açıklamak isterim. Özellikle işletim sistemi programlamada kullanılan bir deyimdir. Özetle; aynı kaynağa birden fazla prosesin ulaşma durumudur. Statik değişekenler veya bir web uygulamasındaki App düzeyindeki değişkenler örnek olabilir. Mutex, semaphore, queue algoritmaları race condition'ları önlemek amacıyla kullanılır.

Deniz KILINÇ tarafından  1/26/2009 9:46 PM tarihinde atılmıştır.
# re: En Kötü 25 Programlama Hatası

Deniz, Race Condition'ı açıkladığın için teşekkür ederim. Tevekkeli işletim sistemi yazmadığımız için karşılaşmadığım bir olay.

gurkantr tarafından  1/30/2009 2:50 AM tarihinde atılmıştır.
# re: En Kötü 25 Programlama Hatası

bu mesajı görüntülensin diye yazmıyorum. ancak herkesin erişebildiği bir web sitesi olması münasebetiyle burayı okuyanların aklında yanlış kalmaması adına naçizane düzeltme önerisi olarak yazıyorum. siz iligl bölümlerini düzenleyip yayınlayabilirsiniz.

Race Condition: bir at yarışı düşünün koşan n tane at ancak bu yarışta şike vardır ve bir tanesinin mutlaka ilk olarak yarışı tamamlaması gerekir. Race condition tam olarak budur.

Bu aslında tam olarak kurtulmak istenen bir durum olarak nitelenmemelidir. ancak varsayımlar hatalarına düşülmemesi gerekir.
örneğin paralel programlamada yüksek öncelikli bir threadin diğer thread e göre daha önce çalışacağı varsayımı klasik yapılan ve aslında single core sistemlerde doğru kabul edilen bir varsayımdır keza ilgili sistem çok çekirdekli yada çok işlemcili olduğunda yüksek öncelikli bir thread ile daha düşük öncelikli bir thread aynı anda çalışabilirler. yani iki at aynı anda yarışı kazanmaya çalışır.

buna programlamada oldukça fazla örnek verilebilir. örneğin paralel çalışaiblir tasarlanmış bir filecopy programını bir thread in okuma bir thread in de yazma yaptığını düşünelim. program önce okuyabilmeli ki yazabilsin yani öncelikle okuma işlemini yapan thread işini yapmalı. bittikten yada bir chunk ı bittikten sonra diğer yazma yapan thread okunan bölümü hedef e yazssın. burada okumanın yazmaya oranla hızlı olcağı varsayımı ile bu senkronizasyon sağlanmazsa floppy den okuyup hd'e yazma işlemi yapan bir senaryo ile karşılaşıldığında karşınıza bir race condition çıkar.

bu durumu gidermek için senkronizasyon yapılmalıdır. senkronizasyon yapmak için ise duruma uygun bir takım mekanizmalar kullanılaiblir örneğin mutex, semaphore, event vs vs gibi.

Diğer taraftan queue bir veri yapısıdır FIFO ya göre çalışır. bu veri yapısının race condition ile ilgili de direk ilgisi bulunmamaktadır.
ancak paralel programlamada domain decomposition denilen decomposition yönteminde veri eğer regular ise bu durumda pipelining uygulanr ki bu queue ile yapılaibilir. en yakın bağlantısı da budur.

sevgilerimle

ertan tarafından  2/25/2009 5:31 PM tarihinde atılmıştır.
# re: En Kötü 25 Programlama Hatası

Selam Ertan,

Açıklaman için çok teşekkür ederim. Yorumları olduğu gibi yayınlamayı felsefe edinmişimdir. Ayrıca yorumun çok açıklayıcı, tekrar teşekkür ederim.

Gürkan Yeniçeri tarafından  3/2/2009 12:24 AM tarihinde atılmıştır.
# En riskli 25 programlama hatas?? | Coder's Stuff

En riskli 25 programlama hatas?? | Coder's Stuff

Pingback/TrackBack tarafından  8/2/2009 4:45 PM tarihinde atılmıştır.
# En riskli 25 programlama hatas?? | Baskin

En riskli 25 programlama hatas?? | Baskin

Pingback/TrackBack tarafından  10/1/2009 3:47 PM tarihinde atılmıştır.
# re: En Kötü 25 Programlama Hatası

Bu yazıyı okuduktan sonra bu hataları yapmayız artık. çok teşekkürler

web tasarım tarafından  11/29/2009 1:48 PM tarihinde atılmıştır.
# re: En Kötü 25 Programlama Hatası

işime yaradı teşekkürler..Yeni şeyler öğrendim

ALİK. tarafından  12/7/2009 8:32 PM tarihinde atılmıştır.

Yorumunuzu buradan giriniz

Yorumlar onaylandıktan sonra yayınlanacaktır

*


*


 (Görüntülenmeyecek)


 (İsminizde link olarak görüntülenecek)


*
Bold Italic Underline Blockquote Hyperlink Hyperlink

 

Please add 2 and 2 and type the answer here:

Yorum Önizleme:

 

Arama



Hakkımda

Merhaba, ben Gürkan Yeniçeri. 10 yılı aşkın süredir özel sektör ve hükümet iştiraklerinde yazılım mühendisliği yapıyorum. Bu sitede 2005 Mart ayından beri genelde yazılım mühendisliği ve Microsoft teknolojileri hakkında yazmaktayım. Profesyonel iş geçmişim hakkında daha fazla bilgiyi aşağıdaki Linkedin.com linkinden alabilirsiniz.
Gürkan Yeniçeri'nin profilini görmek için tıklayın
Faturaları ödeyen günlük işim dışında Açık Kaynak Subtext Projesine katkıda bulunuyorum. Bu blogun alt yapısıda Subtext ile hazırlanmıştır. Ayrıca 1999 yılından beri Programlama.com sitesinde VB6 editörlüğü yapıyorum. Fakat takdir edersinizki VB6 artık ölü bir dil, bu nedenle beta sürümlerinden beri C# ve ASP.NET programcılığı ile uğraşıyorum.

Kontak

Soru sormak veya öneride bulunmak isterseniz buradaki kontak formunu kullanın. Mesajlarınıza en kısa zaman içinde cevap vermeye çalışacağım. Ayrıca Windows Live Messenger kullanarak gyeniceri {AT} hotmail {DOT} com adresinden bana ulaşabilirsiniz.

Eğer İngilizce blogumu okumak isterseniz buraya buyrun.
Blogumu RSS Bandit gibi bir RSS okuyucusu ile de takip etmek için kullanın.
Ayrıca aşağıdaki linklerden hakkımda ayrıtılı bilgi alabilirsiniz.
Twiter
Friendfeed
Facebook

RSS 2.0

Reklamlar


Vezir

Vezir Proje Danışmanı
Sitede birde Vezir isminde wikimiz var. Bu wikiyi yazmayı düşündüğüm bir kitap için oluşturmuştum daha sonra herkese açmaya karar verdim. Vezir yazılım firması kurmak isteyenlere tavsiyeler vermek için hazırlandı. Ayrıca UML ve Modül Tabanlı Geliştirme hakkında da bilgiler mevcut. Vakit buldukça yeni eklemeler yapıyorum. Değişikliklerden haberdar olmak için RSS çıktısına üye olabilirsiniz.

Tag Bulutu

Tüm taglar...
www.flickr.com
This is a Flickr badge showing public photos from gurkanyeniceri. Make your own badge here.
Bu blogda 261 yazı ve 429 yorum var. Diğer sitelerden 22 adet link gelmiş.

Buradayım

my blogmap

Reklamlar