Güvenlik konusu yazılım için oldukça ilginç bir nokta. Herkesin bildiği ama farkında olmadığı garip bir konu. Gerçek hayatta da aslında böyle. Başımıza kötü bir olay gelmediği sürece, güvenliğe çok dikkat etmiyoruz. Gelişen dünya düzeninde, gündelik hayatta bu farkındalık artık çok daha fazla olsa da yazılım konusunda gereken önemi hala tam veremiyoruz.

Bilişim dünyasının bir parçası olmaktan kaçınamadığımız bu çağda, teknolojinin ve yazılımın hayatımızın bir parçası olması güvenlik konusunun daha önemli olmasını sağlıyor aslında. Çoğu işimizi bilgisayar ile yapabiliyor, internet ile 7/24 her yere bağlanabiliyor ve ekonomik/sosyal ihtiyaçlarımızı elimizden düşürmediğimiz telefonlar ile her yerden karşılayabiliyoruz. Bunları yaparken son kullanıcı olarak, bu sistemleri geliştirenler olarak, yazılımları kodlayanlar olarak ya da bu sistemlere destek veren kişiler olarak hepimizin güvenlik konusunda dikkat etmesi gereken şeyler var. Kısacası, güvenlik hepimizin problemi

Guvenlik

Hepimizin problemi olduğu için, herkesin kendince dikkat etmesi noktalar var. “Şifrelerimizi doğum yılımız ya da 123456 gibi ardaşık sayılar yapmıyoruz” ya da “SSL sertifikası olmayan sitelerden kredi kartımızla alışveriş yapmıyoruz”,”Şifrelerimizi kağıtlara yazıp, sağa sola yapıştırmıyoruz” gibi şeylerden çok bahsetmeye gerek yok. Bu farkındalık daha hızlı bir şekilde oluşmaya başlıyor artık. IT sektöründe çalışan kişiler olarak, bu farkındalığın oluşmasında biz ne kadar rol oynuyoruz ya da neler yapıyoruz biraz da artık bunu sorgulamak lazım.

“123456”‘nın şifre olarak kullanılmaması gerektiğini bilmemize rağmen, şifre gerektiren üyelik sistemleri geliştirirken “123456”nın şifre olarak seçilememesine, yazdığı kodda kaç yazılımcı dikkat ediyor; merak ediyorum şahsen… Hala bir çok uygulama, üyelik aşamasında bu tarz şeylere izin veriyor. Ya da SSL sertifikası olmayan sitelerde verilerimizi paylaşmıyorken, neden kendi geliştirdiğimiz uygulamalarda SSL’i zorunlu tutmuyoruz. Statik olarak kullanıcı isimlerini ve hatta şifreleri hala uygulamaların içinde “hard-coded” tutan yazılımlar var mesela. Aynı şekilde IP adresleri de mevcut…

Guvenlik

Neler güvenli ve neden güvenli olması gerekiyor?” sorusu aslında en başta hepimizin sorması ve hepimizin beraber cevap bulması gereken bir soru. Sistem güvenliği, yazılım güvenliği, veri güvenliği ve daha farklı gruplamalar ile tüm ilgili paydaşların ilgisini gerektiren konular var. Sistem açısından; belli ağ içerisinde, belli bir sunucunun belli port’ları önemli olurken, veri sistemi tarafında da, verinin öneminden dolayı sunucu ve disk çeşiti önemli olabilir. Kritik olan, bu noktada bunların hep beraberce konuşulması. Neler güvenli ve neden güvenli olması sorularındaki cevaplar net olduğu zaman bazı şeyler daha kolay olacaktır.

Geliştirdiğimiz sistemlerin dışarıya açılan, son kullanıcıya hitap eden kısmı, “uygulamalar” oluyor genelde. Web, mobil(cep telefonu,tablet..vs) ya da masa üstü gibi farklı ön yüzler ile artık hayatımızın her alanında karşımıza çıkan “uygulamaları” geliştirirken çeşitli güvenlik prensiplerine daha fazla önem vermek gerekiyor sanırsam. Televizyondaki bir uygulamadan havale yapabiliyor olmak, ya da tüm kişisel bilgilerimizi herkesle paylaşabilmek(?) kötü niyetli insanların güvenlik açıklarını tespit etmesinde büyük motivasyon sağlıyor. Uygulamaları geliştirirken de benzer motivasyonun bizde olması lazım.

Uygulamaların girdilerinin doğrulanması, kripto işlemlerinin belli standartlar içerisinde yapılması, yetkilendirme adımlarına dikkat edilmesi gibi daha bir çok çeşitli güvenlik prensipleri artık yazılım geliştirme sürecimizin bir artık parçası olmalı. Sonradan yapılacak güvenlik iyileştirmeleri daha zorlayıcı olacağından baştan eşeği sağlam kazığa bağlamakta fayda var. Mesela yazılım geliştirirken atladığımız “input validation“lar, kötü niyetli insanlar için açık kapı oluşturabiliyor. “SQL Injection” ya da “XSS” bunun bilinen en büyük örnekleri… Kullanılan teknolojiye göre “Buffer overflow” hatalarından hafızaya müdahale edip, istenmeyen komutların çalıştırılabilmesi, hatalardan sistemin açık kapılarını bulup erişim yetkisi olmayan verilere erişim gibi konular uygulamalarımızı geliştirirken engelleyebileceğimiz bir kaç örnek. Genelde sistemlere ya da son kullanıcıya güvenip, bazı varsayımlar içerisinde bulunduğumuz için bu tarz noktalara dikkat edemiyoruz. “Hiç kimseye güvenme” yaklaşımı bu noktada geliştirdiğimiz uygulamalar içinde geçerli…Zaman kötü, kolla kodu.. 😛

Guvenlik

IoT(Internet of Things) ile uygulamaların(yazılımların) artık her yerde olacak olması ile güvenlik konuları daha önemli olacak. Güvenlik konusuna gereken özeni vermezsek, teknoloji bir çözüm olmaktan çok bir problem olmaya başlayacaktır, benden söylemesi… Umarım bilişim dünyası insanı olarak bu konulara daha fazla önem verip, nelerin, neden güvenli olması gerektiğini daha fazla sorgulayıp, güvenli sistemler geliştirmeyi amaçlarız.