0 beğenilme 0 beğenilmeme
24 gösterim

Son zamanlarda geliştirilen projelerde gördüğüm bazı güvenlik zaafiyetlerini listeledim, her ne kadar küçük maddeler olarak gözüksede olası bir hata ile kombine kullanılarak oldukça büyük sonuçlara sebep olabilecek şeyler.

Güvenlik Önerilerim:

1. Yönetici Paneli ve giriş linklerinizde asla “admin” gibi basit klasör adları kullanmayın.

2. “admin”, “root” gibi standart kullanıcı adlarından tüm aşamalarda uzak durun.

3. Sisteminizde “config” adı geçen dizin ve dosya kullanmayın, bu dizinlerde veri ya da bilgi saklamayın.

4. Şifrelerinizi veritabanında şifrelenmemiş şekilde asla barındırmayın, mümkünse sadece md5 değil, encode için en güçlü olan yöntemi seçin.

5. Sitelerdeki en kritik noktalar GET, POST, Ajax ve Dosya Yükleme işlemleridir, üç kere gözden geçirin!

6. Sunucu tabanlı “komut çalıştırma” amaçlı olan tüm komutların PHP içerisinde kullanımını kapatın.

7. Symlink’i kesinlikle kapatın, kurunun yanında yaşta yanar :) Tek seferde sunucuda bulunan tüm sitelerinizi ele geçirmeleri bir kaç saniye alır.

8. Birden fazla internet sitesini barındırdığınız Hosting ve Sunucu’larda diğer tüm sitelerinizi kontrol edin, eski PHP sürümlerine ait geçerliliğini yitirmiş script vb. dosyaları sunucudan silin.

9. Dosya yüklemi dikkatli bir şekilde test edin! Yüklenebilecek formatları kısıtlayın ve ek uzantı yaparak dosya yüklenip/yüklenemediğini kontrol edin.

10. Sunucuda dosya uzantılarının sondan eklemeli farklı ekler ile çalıştırılıp/çalıştırılamadığını kontrol edin, örnek: x.php.fla ile “php” dosyası çalıştırabiliyorsanız, en küçük bir sızma durumunda bir kaç saniye içerisinde hacklenmeniz anlamına gelir.

11. Session’larda asla “açık” şifre tutmayın, encode etmek bedava ve çok basit!

12. Veritabanında kayıtlı bulunan şifrelerinizi, hash değeri olarak textfield içerisinde “value” olarak dahi yazdırmayın!

13. Dosya yazma, değiştirme, silme gibi fonksiyonlar kullanırken kod yapısına dikkat edin.

14. PHP’de asla hata bilgilerinizde “path” (dizin) bilgisi göstermeyin.

15. Geliştirme sürecinizdeki log, uyarı, bildiri gibi “debug” amaçlı teknik bilgilerinizi kullanıcı tarafında hiç bir zaman görüntülenemesin (1sn’de ben açıp/kaparım demeyin, süpriz sonuçları olabilir)

16. Hosting ana dizininizi “httpdocs”, “www”,” “public_html” gibi standart klasör isimlerinin dışında “site” ve “domain adı”ndan farklı olarak isimlendirin, günümüzde bir çok brute force sistem bu kontrolleri bir kaç saniye içerisinde yaparak “path” bilginizi bulabiliyor.

17. Yedek dosyalarınızı “Database,” “Backup” gibi komik isimlerle saklamayın, sonra Google Bot index’leyip herkez indirince insanlar ağlıyor :)

18. Ajax işlemlerinin “ajax” dışında dışarıdan URL ile çalıştırılıp/çalıştırılamadığını kontrol edin.

19. Dosya yetkilerini her zaman gözden geçirin (özellikle cache, yükleme, silme gibi işlemler yapılan dizinlerde)

20. Access log’larınızı “yer kapladığı için” silmeyin, mümkünse arşivleyin sileceksenizde gözden geçirip her şeyin stabil olup olmadığını kontrol edin. Sitenize yapılan URL tabanlı tüm saldırıların access log’lar üzerinden tespit edilebileceğini unutmayın.

21. Sunucunuzda “DirectoryListing” (dizin listeleme)’nin kapalı olduğuna emin olun, açıksa kapatın!

22. Sunucunuzu dışarıdan ping atılmasına karşı kapatın.

23. Sunucunuzdaki belirli sayı üzerinde Kontrol Paneli, SSH, FTP vb. Hatalı şifre girişimleri olduğunda IP Ban gerçekleştirebilecek bir yapı kurun.

24. Sunucunuzda kullandığınız işletim sistemi ve yazılımların her zaman güncel sürümde olup olmadığını kontrol edin.

25. İşletim Sistemi ve Web Sunucu surum/versiyon bilgilerinizi gizleyin. (ServerSignature)

26. Dışarıdan 3rd Party eklenti kurmadan önce 3 kez kontrol edin! Özellikle Ajax, Upload gibi fonksiyonları olan eklentiler oldukça büyük riskler oluşturabiliyor. Mümkünse bir eklenti kurmadan önce Google’da güvenlik açığı olup olmadığı konusunda arama yapın.

27. Sitelerdeki diğer en kritik noktalardan biri “textfield” gibi sorgu çalıştırılabilen alanlardır. “XSS” ile alakalı mutlaka tüm testleri yapın!

28. Phpinfo dosyasını açıkta ve özellikle “phpinfo.php” gibi bir isimle bırakmak gibi bir hata asla yapmayın!

29. Sunucunuzda adığını bilmediğiniz ama ismi karizmatik gelen aktif servis, eklenti ve modülleri öncelikli olarak Google üzerinden aratarak kullanmıyorsanız kapatın.

30. PHP7’ye geçiş yapın! MySQL için "mysqli" yerine “PDO” sürücüsü tercih edin.

31. MySQL veritabanı erişiminizi dışarıda IP’lere kısıtlayın.

32. Sunucunuzda SSH aktif ise, portunu değiştirin.

33. Sunucunuzda dışarıdan kod çalıştırılmasını kapatın. (Remote Code Execution)

34. Düz MySQL sorgu kullanmaktan kaçının.

35. Sorgularda tırnaklara her zaman dikkat edin.

“SELECT * from tablo WHERE kolon = ‘” + parameter + “”; “
gibi masum görünen bir kod saldırı anında parametreyi URL üzerinden ‘ ya da ‘1’=’1 gibi sorgu ile aşağıdaki şekilde çalıştırmasını sağlar:
“SELECT * from tablo WHERE kolon = ‘’ OR ‘1’=’1’;”
Merhaba, şifresiz login! :)

36. Yazılımlarınızda “hatalı giriş denemesi” olan işlemleri IP ve tarihli olarak kayıt edin, iz sürmenize faydalı olur.

37. Doğum tarihi, telefon numarası, akraba & sevgili ismi gibi şifrelerden başına sonuna rakamda ekleseniz uzak durun(!) :)

38. Aynı IP üzerinden yapılan anlık çok fazla istek olması durumunda bunu engelleyecek ve bildirim yapabilecek bir yapı kurun. 

39. Yedeklerinizi asla “web” tarafından erişilebilecek dizinlerde yapmayın.

40. Sniffing’e maruz kalmamak için FTP protokolünüzü FTPS’e çevirin ve kullanımları FTPS üzerinden yapın.

41. Kontrol Paneli vb. “şifre ile işlem” yapılan tüm alanlarda HTTPS bağlantı kullanın! SSL ile kurulan iletişim Sniffing’in en alt katmandaki en büyük düşmanıdır.

42. Veri kayıt aşamalarında güvenlik zaafiyeti yaratabilecek karakterleri temizleyin.

43. Session ve cookie’lerinizin unique (eşsiz) olup olmadığını ve kopyalanarak ya da manipüle edilerek kullanılamıyor olmadığını kontrol edin.

44. PHP hata kayıtlarını saklayın, gözden geçirmeden silmeyin!

45. Apache kullanıyorsanız mod_security’i aktif etmeniz brute force saldırılara karşı faydalı olabilir.
 
46. Frontend (kullanıcı arayüzü)’nde “Backend”e ait dizin bilgisi gösterecek klasör ve linkler kullanmayın.

47. Sistemlerinizde mümkünse eş zamanlı oturum (session) oluşturulmasını engelleyin, tek oturum sağlamaya çalışın.

48. Sitede kullanılan tüm formlarda mutlaka CSRF kontrolleri yapın!

49. Geliştirmiş olduğunuz yazılımı internette bulabileceğiniz ücretli ve ücretsiz yazılım/siteler aracılığı ile test edin, siz yapamıyorsanız yapabilecek profesyonel birini bulun.

50. “Kim saldıracak ki?”, “Niye saldırsınlar ki?”, “Kim uğraşır ki?” demeyin. Önleminizi erkenden alın, Yazılım Güvenliği konusunda günümüz çağında MUTLAKA(!) bilinçlenin, güvenlik hususu gözden geçirilmemiş Yazılımcı “sıranın kendisine gelmesini bekleyen” kişidir. Er ya da geç bilinçlenecektir :)

Alıntı

2 Kasım Genel kategorisinde serhat.öcal Uzman Coder (13,350 puan) paylaştı | 24 gösterim

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

uzmancoder.com'a Hoşgeldiniz. Sitemiz 24.06.2017 tarihinde kurulan bir soru-cevap platformudur.

Siz de aklınıza takılan soruları sorabilir veya diğer sorulara cevaplar yazabilirsiniz.

BU AY EN AKTİF ÜYELER

    96 soru

    81 cevap

    19 yorum

    123 üye

    ×

    Bizi Takip Edin!

    Bumerang - Yazarkafe

    comodo ssl




    96 soru
    81 cevap
    19 yorum
    123 üye