Include Karabük sitesi; logosunu Karabük ilimizin safran çiçeğinden alan, ismini C programlama dilinde programlara kütüphane yüklemek için kullanılan #Include <...> direktifinden ve bu direktife verilen Karabük string'inden alan (böylece Karabük ilinin teknolojiye dahil edildiği imasını vurgulamak isteyen), yerlilik hassasiyetinden hareketle sıfırdan geliştirilmiş ve sıra yazı paylaşımına geldiğinde halihazırda üzerinde çalışmalarda bulunulan bilgi güvenliği alanında az sayıda insanın yürüttüğü Türkçe içerik seferbeliğine katkı sunmayı amaçlayan, "İngilizceden gelen teknolojinin Türkçeyle buluşma noktası" sloganıyla da siz okuyuculara kendini duyuran bir blog sitesidir. Yerlidir. Millidir. Ne kadar yerli ve milli, oranları şimdi istatistiki verilerle ortaya koyacağım.
Geliştirdiğim bu yerli web uygulaması (blogu) bir blog'da var olması gereken temel unsurların tamamına sahiptir. Görmediğiniz arayüzlerde belki de daha fazlasına sahiptir diyebilirim. Bu noktadan daha da ileriye taşımak için bilgim, tecrübem ve imkanım var ama şu an için böyle bir niyetim yok. Çünkü amacım en ince ayrıntısını dahi bildiğim bir uygulama geliştirmek ve bu uygulamayı saldırılara karşı korumaktı. Bu şekilde kendi laboratuvarımı oluşturmaktı. Blog'u internete açtığım günden bu yana belli aralıklarla, bazen sürekli bir şekilde onlarca / yüzlerce farklı noktadan ve ülkeden binlerce saldırı gelmekte. Kimden ne paket geliyor bilgileri havuzumda birikmekte. Örneğin bu süreçte yediğim saldırılardan biri blog içerisinde paylaştığım sayfa görüntüleme sayılarını manipule etmeye dönüktü. Bu çok can sıkıcıydı. Zira makalenin istatistiki verisi çöp edildiği gibi, aynı zamanda en çok okunan yazılar kutusu tamamen güvenilmez bir sıralamayı sergiler hale geliyordu. Bunun üzerine geliştirdiğim uygulamamı yediğim saldırılardan ders çıkararak elden geçirdim ve düzenledim. Test ettim ve manipulasyonun yapılamadığını gördüm. Ardından üçüncü taraf bir noktadan yine aynı tür saldırının yapıldığını fark ettim ve sonuç: Gelen saldırılar başarısız. Yani güvenlik açığını kapamış oldum. Bu oluşturduğum yerli lab ortamında bu v.b. olaylar bana saldırıyı ve savunmayı yaşayarak öğrettiğinden benim için paha biçilmezdir. Gelen her saldırı paketi, benim yaşadığım süreç ve reflekslerim, bunların her biri yaşayarak elde edilen ve asla unutulamayacak tecrübeler niteliğindedir. Tabi tüm bunların yanısıra sürekli çalış, biriktir, tekrar çalış, biriktir, tekrar çalış, biriktir... sarmalı döneminde edindiğim bilgi güvenliğine dair tecrübelerimi artık belirli bir periyod dahilinde makale veya makale dizileri şeklinde blog'da paylaşmayı da yapılacaklar listeme dahil ettim ve başladım.
Şimdi yerlilik testinden geçirdiğim blogumun istatistiki verilerini sizlerle paylaşayım. Bu istatistiki verilerin hesaplamasında "Physical SLOC (yani Fiziksel Kaynak Kod Satırları)" metodolojisi takip edilmiştir ve hesaplama aracı olarak bash dili ile hazırladığım tek satırlık script'ler kullanılmıştır. İşte veriler:
Tüm bu istatiki verileri hesaplamak için hazırladığım tek satırlık bash script'ler ise şu şekildedir:
a) Toplam Kod Satırı Sayısı
find . -regextype sed -iregex ".*/.*\.\(css\|js\|php\)" -print | while IFS= read -r dosyaIsmi; do wc -l $dosyaIsmi; done | awk '{n += $1}; END{print n}'
b) Yazılan Kod Satırı Sayısı
find . -not -path "*/syntaxHiglighter/*" -not -path "*/email/*" -not -path "*/jquery/*" -regextype sed -iregex ".*/.*\.\(css\|js\|php\)" -print | while IFS= read -r dosyaIsmi; do wc -l $dosyaIsmi; done | awk '{n += $1}; END{print n}'
c) Dışarıdan Alınan Kütüphanelerin Kod Satırı Sayısı
find . -regextype sed -iregex ".*/\(syntaxHiglighter/\|email/\|jquery/\).*\.\(css\|js\|php\)" -print | while IFS= read -r dosyaIsmi; do wc -l $dosyaIsmi; done
d) Dışarıdan Blok Halinde Alınan ve Modifiye Edilerek (Arzuma Uygun Şekilde Özelleştirilerek) Kullanılan Ufak Modüllerin Kod Satır Sayısı
--- Düzeltme :
--- Güvenlik gerekçesiyle ilgili blokları
--- içeren dosya isimleri ve uzantıları
--- verilmemiştir.
find . -regextype sed -iregex ".*/\(<gizlendi>\.<gizlendi> \| <gizlendi> \. <gizlendi> \| >gizlendi< \. <gizlendi> \| <gizlendi> \. <gizlendi> \)" -print | while IFS= read -r dosyaIsmi; do wc -l $dosyaIsmi; done | awk '{n += $1}; END{print n}'
Verilen veriler doğrultusunda sıfırdan geliştirdiğim web uygulamasının millilik ve yerlilik oranı hesaplanabilir:
31053 19829
100 x
------------------
19829 x 100 / 31053 ~= 63.86
Sonuç olarak 19 bin 829 satırlık kodlamada bulunarak sıfırdan geliştirdiğim web uygulamamın yerlilik oranı %63.86 şeklindedir.
Ek Bilgi:
Tamamen Tarafımca Geliştirilen Modüller Hk.
(Sadece Kritik Mahiyette Olanlardan Bahsedilmektedir)
a) Blog içi tarama olarak 8 adet kategorizasyon üzerine kurgulanmış ve sıralamanın bu tertipte kullanıcıya sunulduğu arama motoru geliştirilmiştir.
b) Javascript'le bezenmiş, değişen durumlara göre dinamik yazı gösteriminde bulunabilen arşiv kutusu geliştirmeye başlanılmıştır. Esinlenmek adına google'dan bulunan rasgele bir Wordpress blog'una girilmiştir ve o wordpress uygulamasındaki arşiv kutusunun verdiği davranışlar incelenmiştir. Ardından aynı mantıkta çalışabilecek bir algoritma geliştirilmiştir ve modern blog sitelerindeki arşiv kutusunun işleyişinin aynısı üretilebilmiştir)
c) Yazılan makalelerin hep aynı sayfada alt alta indiği gerçeği fark edildikten sonra bunu sayfalama metoduyla bölüştürme üzerine çalışmaya gidilmiştir. Esinlenmek için Google arama motoru açılmıştır ve sayfada listelenen sayfa numaraları, ilerledikçe ya da geri döndükçe Google'ın sayfa numaralandırmasında nasıl bir davranış sergilediği gözlemlenmiştir. Ardından büyük ölçüde Google'daki sayfalandırmaya benzer bir davranışa sahip sayfalama modülü geliştirilmiştir.
d) Temel blog işlevlerinin yer aldığı admin paneli geliştirilmiştir.
e) Güvenlik merkezi oluşturulmuştur ve ayrıca katman anlayışı perspektifinden yola çıkarak çeşitli sayıda mantıklı / makul güvenlik katmanları oluşturulmuştur.
Know-how Hk.
Prensip olarak hazmedilmemiş / anlaşılamamış hiçbir harici modül blog'da kullanılmamıştır. İhtiyaç duyulan her harici modül her bir satırı incelenmek ve kullanılmış teknolojiye / algoritmaya / işleyişe hakim olmak suretiyle blog'ta yer bulmuştur. Bunun neticesinde modüllerde arzulanan özelleştirmeler olabildiğince esnek bir şekilde yapılabilmiştir.
Ancak dışarıdan alınan harici kütüphanelerin (jquery, email, syntaxHighlighter) sadece özelleştirme ihtiyacı duyulan kısımları okunmuştur ve ilgili o kısımlarına hakim olunup gerekli özelleştirmeler (modifikasyonlar) yapılmıştır. Geri kalan kısımları okumaya tabi tutulmamıştır. Çünkü hedef olarak tayin edilen işin scope'u (kapsamı) dışına çıkılmış olacaktı. Hedef; sıfırdan bir blog geliştirmek ve en ince ayrıntısına kadar bilinecek / vakıf olunacak bu uygulamayı güvenlik noktasında savunmak üzerine kuruluydu. Web uygulaması kütüphanesi olayı ise bu hedefi olabildiğince geciktirebilecek vasıfta olduğundan pas geçilmiştir ve yine özelleştirmeye ihtiyaç duyulduğu zaman kütüphanelere geri dönülüp ilgili kısımlarını okuma, vakıf olma ve değiştirme üzerine kurgulanmış metodu kullanmayı tercih edeceğim.
Faydalanılan Kaynaklar
▪ https://en.wikipedia.org/wiki/Source_lines_of_code
▪ https://docs.microsoft.com/en-us/visualstudio/code-quality/code-metrics-values?view=vs-2017
▪ https://forum.unity.com/threads/is-a-website-a-software.355685/
▪ https://www.google.com.tr/search?client=ubuntu&hs=ZC0&ei=YpdJXPOwO6K11fAPutuDYA&q=is+website+a+software&oq=is+website+a+software&gs_l=psy-ab.3..0i7i30j0i203j0i8i7i30l2j0i8i30l6.18329.27003..27811...2.0..0.269.4210.0j22j2......0....1..gws-wiz.......35i39j0i131j0j0i67j0i10j0i10i203j0i22i30j0i22i10i30.KKqZpCm2Ujg
▪ https://en.wikipedia.org/wiki/Website