Fort Knox Kadar Güvenli: Bir Web Sitesini Hackerlardan Nasıl Koruyabilirsiniz?
Yayınlanan: 2021-10-05Bu makalede, bir web sitesinin saldırıya uğramasını ve yasa dışı faaliyetler için kullanılmasını önleme konusunda bir kılavuz sunuyoruz.
Çevrimiçi güvenlik, internetin sonsuz mavi gökyüzünde büyük bir kırmızı bayraktır. Ve "çevrimiçi güvenlik" kelimeleri akla ilk olarak çevrimiçi tacizi ve kullanıcılar için korumayı getirse de, web sitesi güvenliği eksikliğinin bir işletmeye verebileceği zarar da önemlidir. Güvenlik harcamalarını kesen web sitesi sahipleri, itibarlarıyla öder ve sonuç olarak maddi kayıplara uğrar.
İçindekiler:
- Neden her web sitesi sahibinin güvenliğe yatırım yapması gerekiyor?
- Hangi güvenlik açıklarından bahsediyoruz?
- Enjeksiyon kusurları
- Hassas verilere maruz kalma
- Siteler arası komut dosyası çalıştırma (XSS) saldırıları
- Bozuk kimlik doğrulama
- Güvenlik yanlış yapılandırması
- Bozuk erişim kontrolü
- Güvenli olmayan seri durumdan çıkarma
- Yetersiz kayıt ve izleme
- XML harici varlıkları (XXE)
- Bilinen güvenlik açıklarına sahip bileşenleri kullanma
- Güvenli bir web sitesi nasıl oluşturulur
- Bir web sitesinin güvenliğini sağlamanın maliyeti nedir?
HER web sitesi sahibinin neden güvenliğe yatırım yapması gerekir?
Bazı web sitesi sahiplerinin şöyle düşünceleri var: Web sitemde çalınacak hiçbir şey yok. Herhangi bir kullanıcı verisi veya ödeme detayı tutmuyorum. Pahalı, birinci sınıf güvenliğe ihtiyacım yok.
Ancak, bu sadece düz naif. Herhangi bir kişisel veya finansal veri barındırmasa bile web sitenizin saldırıya uğramasının birkaç nedeni vardır. Bilgisayar korsanlarının hemen hemen tüm korumasız sunucular için sahip olabileceği kullanımların bir listesi:
- Fidye istemek için. Sunucularınızda herhangi bir kullanıcı verisi tutmasanız bile, bilgisayar korsanları bunları ele geçirebilir ve geri almak için sizden para talep edebilir.
- SMTP (basit posta aktarım protokolü) geçişi olarak kullanmak için. SMTP, e-postaları toplu olarak göndermek için kullanılan bir protokoldür - örneğin haber bültenleri. Bilgisayar korsanları, spam veya fidye yazılımı göndermek için sunucularınızı kullanabilir.
- Bitcoin madenciliği yapmak için.
- Botnet'in bir parçası olarak DDoS saldırılarında kullanmak için.
- Web sitenizdeki verileri değiştirmek veya silmek için. Bunu isteme nedenleri değişebilir.
Ve bu sadece yüzeyi çiziyor. Üçüncü şahıslar (hackerlar ve diğer suçlular) tarafından oluşturulan tehditlerin yanı sıra, örneğin web sitenizi yöneten çalışanların olası hatalarından kaynaklanan tehditler de vardır. Aslında, iç güvenlik, daha fazla değilse de, dış güvenlik kadar önemlidir.
Peki web sitemi bilgisayar korsanlarından nasıl koruyabilirim? sen sor.
Pekala, bir dizi güvenlik açığını hesaba katmalı ve bunlarla uğraşmalısınız.
Hangi güvenlik açıklarından bahsediyoruz?
Sektörde siber güvenlikle ilgilenen en saygın kuruluşlardan biri, kısaca OWASP, Açık Web Uygulama Güvenliği Projesidir. OWASP vakfı, yaygın web güvenliği sorunları listesini izler ve düzenli olarak günceller. Aşağıdakiler, bu makalenin yazıldığı gün itibariyle listelerinde (belirli bir sıra olmadan) yaygın güvenlik sorunları ve web sitenize yönelik tehlikeyi nasıl azaltacağınıza ilişkin bazı ipuçlarıdır.
Enjeksiyon kusurları
Enjeksiyon kusurları veritabanlarıyla ilgilidir ve yetersiz giriş doğrulamasından kaynaklanır. Sisteminiz kullanıcı girişini kabul ettiğinde ancak bu girişi uygun şekilde filtreleyemediğinde, sistemi savunmasız hale getirir - bilgisayar korsanları kodlarını sisteminize (dolayısıyla adı) enjekte etmek için bundan yararlanabilir. Bu enjekte edilen kod, web sitenizin istemediğiniz komutları gerçekleştirmesine, hassas verileri görüntülemesine ve hatta web sitesinin kontrolünü bilgisayar korsanına bırakmasına neden olabilir.
En popüler enjeksiyon güvenlik açığı türü SQL veritabanlarını içerir, ancak enjeksiyon güvenlik açıkları gerçekten bunlarla sınırlı değildir. XPath sorguları, LDAP ifadeleri ve XML komut dosyaları da enjeksiyona karşı savunmasız olabilir.
Bir web sitesi enjeksiyon kusurlarından nasıl güvenli hale getirilir? En iyi uygulamalardan ikisi, SQL sorgusu temizleme ve parametreli sorguları kullanmayı içerir. Bunu yapmanıza izin veren API'ler var.
Bunları elle uygulamak istemiyorsanız, tercih ettiğiniz programlama dili için bir ORM (nesne-ilişkisel haritalama) aracı kullanabilirsiniz. ActiveRecord'u Rails ekosistemiyle sıkı bir şekilde bağlantılı olduğu için kullanıyoruz.
Yukarıdaki seçeneklerin hiçbiri tamamen güvenilir değil, ancak bugünlerde sağlam korumaya olabildiğince yakın.
Hassas verilere maruz kalma
Hassas veriler, bir kişiyi şu veya bu şekilde istismar etmek için kullanılabilecek herhangi bir veridir:
- İsim
- Sosyal Güvenlik numarası
- Ehliyet numarası
- Kredi kartı bilgisi
- Kullanıcı adları ve şifreler
- Doğum tarihi
- Sağlık Bilgisi
- Kızlık soyadı
- Ebeveynlerin isimleri
Örneğin, banka hesabınız için bir güvenlik sorusunun yanıtı olan herhangi bir bilgiyi bile içerebilir. İlk evcil hayvanınızın adının hassas veri olarak kabul edilebileceğini kim düşünebilirdi, değil mi?
Web sitelerini hassas verilere maruz kalmaktan korumak zordur, çünkü bu maruziyetin tahmin edilmesi ve tespit edilmesi zordur. Ancak alabileceğiniz önleyici tedbirler var. Hassas veriler, bir web sitesinde saklanıyorsa, asla düz metin olarak saklanmamalıdır ; en son teknoloji ile şifrelenmeli ve sadece güvenli kanallar üzerinden iletilmelidir.
Web siteniz herhangi bir işlemi kolaylaştırıyorsa veya genel olarak hassas verilerle ilgileniyorsa, SSL şifrelemesi kullanması gerekir. Bu, mevcut en yeni ve en iyi şifreleme teknolojisidir. SSL şifrelemesi, verileri bir tarayıcı ile sunucu arasında veya sunucular arasında güvenle aktarmanıza yardımcı olur. Ayrıca, birçok kullanıcı güvenli olup olmadığını görmek için web sitenizin adresinde HTTPS arayacaktır. Bu başlık, bir SSL sertifikası aldığınızda elde ettiğiniz şeydir.
Ayrıca genellikle verileri bulutta depolamanız önerilir. Ancak, yalnızca bulutta depolamanın verileri otomatik olarak güvenli hale getireceğini varsaymayın. Yine de tüm koruyucu önlemler uygulanmalı ve güvenliği düzenli olarak izlemeli ve güncellemelisiniz.
Siteler arası komut dosyası çalıştırma (XSS) saldırıları
XSS güvenlik açıkları, bilgisayar korsanlarının yerel olmayan kod enjekte ederek web sitenizin sayfalarını etkilemesine izin verdiğinden, bir şekilde enjeksiyon kusurlarına benzer. XSS durumunda, JavaScript enjeksiyonundan bahsediyoruz. Bir bilgisayar korsanı tarafından enjekte edilen JavaScript, sayfa içeriğini değiştirebilir, kötü amaçlı web sitelerine bağlantılar ekleyebilir ve orijinal olarak gizlenmiş verileri bilgisayar korsanına geri göndererek hassas verilerin açığa çıkmasına neden olabilir.
Ruby on Rails ve React, yerleşik XSS korumasına sahiptir. Anti-XSS ve anti-enjeksiyon önlemleri için başka bir seçenek, Content-Security-Policy HTTP yanıt başlığını kullanmak olabilir.
Bozuk kimlik doğrulama
Başlangıçta “Bozuk kimlik doğrulama ve oturum yönetimi” olarak adlandırılan bu kusur, adından da anlaşılacağı gibi, kullanıcı kimlik doğrulaması ve oturum yönetimi sırasındaki güvenlik açıklarıyla ilgilenir. Bu, oturum kimlik bilgilerinin ifşa edilmesini ve oturum kimlikleriyle ilgili bir dizi sorunu içerir:
- Zayıf oturum kimlikleri
- URL'lerde gösterilen oturum kimlikleri
- Oturum açmalar arasında değişmeyen oturum kimlikleri
- Güvenli olmayan bağlantılar aracılığıyla oturum kimliklerinin iletilmesi
Oturum kimlikleri, kimlik bilgileriyle aynı şekilde doğrudan bir kullanıcının kimliğine bağlıdır ve bu nedenle, bunların ele geçirilmesi, bir kullanıcının hesabının ele geçirilmesine yol açabilir. Bu, kullanıcılarınız için finansal ve itibardan sağlıkla ilgili her türlü zarara yol açar.
Web sitenizi kimlik doğrulama saldırılarından korumak için, çok faktörlü kimlik doğrulamayı zorunlu kılın : örneğin, sabit bir parola ve kullanıcının mobil cihazına teslim edilen tek seferlik bir parola isteyin.
Google, iki faktörlü kimlik doğrulama için bir seçenek kullanır : Google hesabınızı bir web tarayıcısında açmak için önce şifrenizi girmeniz gerekir. Doğruysa, telefonunuzda Google uygulamasını da açmanız ve web tarayıcısında gösterilen numarayı seçmeniz gerekir.
Bozuk kimlik doğrulama için daha belirgin web sitesi koruma yöntemleri şunları içerir:
- Parola karmaşıklığını zorlama - "Parolanız en az 8 karakter uzunluğunda olmalı ve en az bir sayı, bir büyük harf ve bir küçük harf içermelidir."
- hesabın askıya alınmasından önce (belirli bir süre için veya kullanıcı site yöneticileriyle iletişime geçene kadar) giriş denemelerini sınırlama ve yöneticileri uyarma
Güvenlik yanlış yapılandırması
Güvenlik yanlış yapılandırması, web sitenizin herhangi bir aşamasında ve herhangi bir bölümünde olabileceğinden, geniş bir konudur: bir veritabanı, ağ, sunucu, çerçeve, depolama veya hemen hemen her şey. Sistem işlevselliğine erişim sağlamak için yapılandırma zayıflıklarından yararlanılabilir. Güvenlik açığının nerede olduğuna bağlı olarak, bu erişim kısmi veya tam olabilir. Yanlış yapılandırma örnekleri:
- Varsayılan hesapları/şifreleri devre dışı bırakmadınız.
- Gereksiz ve kullanılmayan özellikler var.
- Buluta erişim izinleri güvenli bir şekilde yapılandırılmamıştır.
- Hata mesajlarınız kullanıcı adları, şifreler veya e-posta adresleri gibi hassas bilgileri görüntüler.
Yanlış yapılandırmayı önlemek için yapılacak ilk şey, kullanılmayan her şeyi (özellikler, örnekler, çerçeveler vb.) kaldırmaktır. Sonraki adım, tüm ortamlar için aynı yapılandırmayı sağlamak ve performansını düzenli olarak kontrol etmektir. İyi düşünülmüş bir mimari şarttır.
Bozuk erişim kontrolü
Erişim kontrolü, kullanıcıların yapabilecekleri ve yapamayacakları üzerindeki kontroldür. Düzgün bir şekilde uygulanmadığında, kullanıcıların web sitenizi öngörülemeyen şekillerde etkileyebilecek eylemler gerçekleştirebileceği anlamına gelir. Bozuk erişim kontrolünden yararlanmanın bir yolu, diğer kullanıcıların profillerini ve verilerini görüntülemek ve düzenlemektir. Bir diğeri, premium özelliklere ödeme yapmadan veya kazanmadan erişmektir. Bir diğeri, yönetici olmayan bir hesaptan (veya daha kötüsü, hesap olmadan) yönetici sayfalarına erişmektir.
Web sitenizin erişim kontrolünün çalıştığından emin olmanın en iyi yolu manuel testtir. Hiçbir otomatik test aracı, erişim kontrolünün amaçlandığı gibi çalıştığını garanti edemez.
Bozuk erişim denetimi, aksi takdirde kısıtlanmış API'lere erişim sağlayabilen çapraz menşeli kaynak paylaşımı (CORS) mekanizmasının kötüye kullanılmasından da kaynaklanabilir. Bu nedenle CORS'u mümkün olduğunca az kullanmanız önerilir.
Güvenli olmayan seri durumdan çıkarma
Serileştirme, bir nesneyi ikili koda dönüştürme işlemidir. Seri durumdan çıkarma, mantıksal olarak tam tersidir. Her ikisi de web geliştirmede düzenli olarak yürütülen süreçlerdir ve bu da onları saldırılarda kullanmaya karşı koruma sağlamayı önemli kılar.
İyi haber şu ki, seri durumdan çıkarma normal bir kullanıcı veya çalışanınızın yanlışlıkla yapabileceği bir şey değil. Bu aynı zamanda kısmen kötü haberdir - seriyi kaldırma saldırıları her zaman kasıtlıdır ve dolayısıyla kısırdır. Ayrıca uzaktan kod çalıştırma, web sitesine kimlik doğrulama olmadan girme ve DoS (hizmet reddi) saldırıları başlatma gibi en ciddi sorunlara da neden olurlar.
Web sitenizi bu tür saldırılara karşı korumanın en kolay yolu, kullanıcı tarafından oluşturulan serileştirilmiş nesneleri yasaklamaktır. Bu yapılamıyorsa, bir sonraki en iyi seçenek bütünlük kontrolleri için kriptografik imzaları kullanmaktır.
JSON, YAML veya XML kullanmak, bu biçimler ikili olmadığından, bilgisayar korsanları için seri durumdan çıkarma zayıflıklarından yararlanmayı zorlaştırabilir.
Yetersiz kayıt ve izleme
Bu güvenlik açığı oldukça açık görünüyor: Web sitenizi izlemezseniz ve tüm hataları ve başarısız oturum açma veya erişim denetimi işlevini yürütme girişimlerini günlüğe kaydetmezseniz , temelde bilgisayar korsanlarını web sitenize saldırmaya teşvik edersiniz. Herhangi bir savaş türünde, dijital veya gerçek hayatta, ilk saldırı genellikle kazanmakla değil, neyle karşı karşıya olduğunuzu görmekle ilgilidir. Ve içeri girmenin kolay bir yolu varsa, onu kullanırsın. Bu tür araştırmaların kaydedilmemesi ve izlenmemesi, sisteminizin saldırıyı tamamen kaçırmasına veya saldırı gerçekleştikten ve hasar verildikten sonra algılamasına neden olacaktır.
Kullanıcıların para ve finansal kimlik bilgileriyle ilgilendikleri için günlük kaydı, e-ticaret siteleri için özellikle önemlidir.
Web sitenizi daha güvenli hale getirmek için, tüm başarısız girişimleri uygun şekilde günlüğe kaydedin ve bu günlüklerin yerel sunucularınızın dışında saklandığından ve yedeklendiğinden emin olun. Bu tür hatalar için otomatik uyarı sistemleri kullanın ve mümkünse, sürekli olarak bu tür hatalar oluşturan hesapları askıya alın. Olası bir ihlale anında tepki verebilmeniz için gerçek zamanlı uyarı sistemlerine sahip olmak çok önemlidir.
XML harici varlıkları (XXE)
XML'den (Genişletilebilir İşaretleme Dili) birkaç kez bahsetmiştik. Kullanımı kolay ve yaygın hale getiren esnek bir dildir. XML işlemcileri, XML belgelerinden verileri ayrıştırır. Web siteniz XML tabanlıysa ve XML yüklemelerini doğrulama olmadan kabul ediyorsa saldırılara açık olabilir.
Web sitenizin bütünlüğünü korumak için aşağıdaki eylemler önerilir:
- DTD (belge türü tanımı) işlemeyi devre dışı bırakın.
- XML yüklemelerini sınırlayın veya önleyin ya da bu yapılamıyorsa beyaz listeye almayı zorunlu kılın - pozitif sunucu tarafı giriş doğrulaması.
- XLM işlemcilerinizi ve kitaplıklarınızı düzenli olarak yükseltin.
- Hassas verilerin serileştirilmesini önleyin.
- Uygun olduğunda, JSON veya benzeri basit biçimleri kullanın.
- Web Uygulaması Güvenlik Duvarlarını (WAF'ler) ve API güvenlik ağ geçitlerini uygulayın.
Bilinen güvenlik açıklarına sahip bileşenleri kullanma
Hiçbir şey mükemmel değildir ve yazılımınızda kullandığınız herhangi bir bileşenin bilinen veya bilinmeyen bazı güvenlik açıkları olması zorunludur. Keşfedilen ve tanınan güvenlik açıklarına yanıt olarak yazılım, bu güvenlik açıklarını kapsayacak veya bunların istismar edilmesinden kaynaklanabilecek zararları azaltacak şekilde güncellenir. Bazı zayıflıklar küçük hasarlara neden olabilir, ancak diğerleri işinize zarar verebilir.
Bilinen güvenlik açıkları nedeniyle web sitesi korsanlığını önlemek için, web sitenizde kullanılan tüm bileşenleri düzenli olarak güncellemeleri kontrol etmek ve güncellemek önemlidir. Bu, bileşen ağırlıklı yazılımlarda ve web sitelerinde sıkıcı bir görev olabilir. Bu nedenle güvenlik uzmanları, gereksiz ve kullanılmayan kitaplıkları, özellikleri, dosyaları ve diğer bileşenleri düzenli olarak kontrol etmenizi ve kaldırmanızı önerir. Ve elbette, yalnızca resmi kaynaklardan gelen bileşenleri kullanın. Genellikle ücretli yazılımları ücretsiz olarak dağıtan web sitelerine kanmayın - web sitenizi hacklemek için değiştirilebilir.
Güvenli bir web sitesi nasıl oluşturulur: sonuç
Tüm teknoloji ağırlıklı bilgileri sıradan olmayanların terimlerine koymak için, güvenli bir web sitesi oluşturmak istiyorsanız izlemeniz gereken güvenlik ipuçları:
- Güvenilir bir web barındırma bulun.
- Web sitenizde kullanılan tüm yazılımları, çerçeveleri ve kitaplıkları düzenli olarak güncelleyin.
- Gereksiz özellikleri ve bileşenleri web sitenizden kaldırın.
- Hem tarayıcı hem de sunucu tarafında girişi doğrulamak için sistemler kurun.
- Hata mesajlarında görüntülenen bilgileri izleyin.
- Kullanıcılar için bir parola gücü denetleyicisi ayarlayın.
- Sunucularınız ve yönetici sayfalarınız için her zaman güçlü şifreler kullanın ve bunları düzenli olarak değiştirin.
- Bir SSL sertifikasına yatırım yapın / HTTPS protokolünü kullanın.
- Hatalar ve hatalar için uygun günlük kaydını ayarlayın.
- Denetim işlemlerini günlüğe kaydedin (özellikle sizinki bir e-ticaret sitesiyse).
- Günlükleri yakından izleyin.
- Bulut sunucularını kullanın, ancak yine de verilerinizi koruyun.
- Hassas verileri her zaman en son teknolojileri kullanarak şifreleyin.
- Saldırılara zamanında tepki verebilmek için güvenlik ekibinizin, ortaya çıkan güvenlik güncellemelerini ve yeni tehditleri takip etmesini sağlayın.
Bir web sitesinin güvenliğini sağlamanın maliyeti nedir?
Bu, kesin bir cevabı olmayan bir sorudur. Güvenlik maliyeti, büyük ölçüde sitenizin kullandığı teknoloji yığınına bağlıdır. Ayrıca, güncellemelerin kaç tane bileşeni güncellemeniz gerektiğine, bunları ne sıklıkta güncellemeniz gerektiğine ve her birini güncellemenin maliyetine bağlı olarak bir güncelleme maliyeti vardır. Bu maliyetlerin geliştiricileriniz tarafından ayrı ayrı hesaplanması gerekir.
Geliştirmenin en başından itibaren güvenliğin dikkate alınmasını şiddetle tavsiye ettik . Güvenlik konusunu sona bırakmak, sitenizin özünde değişiklik yapma ihtiyacına neden olabilir (ve büyük olasılıkla olacaktır), bu da en baştan güvenlik sağlamaktan bile daha pahalı olabilir.
Çözüm
Kendiniz bir geliştiriciyseniz, bir geliştirme şirketiniz varsa veya kurum içi bir geliştirme ekibiniz varsa, tüm bu görevleri onlardan önce belirleyebilirsiniz. Ancak, zaten yanınızda teknik uzmanlar yoksa ve bir dış kaynak sağlayıcı ile nasıl güvenli bir web sitesi oluşturacağınızı öğrenmek istiyorsanız, yalnızca web sitesi oluşturamayan aynı zamanda onu destekleyebilecek bir geliştirme şirketi bulmanızı öneririz. Her güvenlik açığını tahmin etmek neredeyse imkansızdır, ancak herhangi bir ihlale zamanında tepki verme yeteneği, web sitenizi en kötü kaderden kurtarabilir.
Mind Studios'taki geliştiriciler, en iyi güvenlik uygulamalarında deneyimlidir ve en yeni trendlere ayak uydurur. Web sitenizi bilgisayar korsanlarından nasıl koruyacağınızla ilgili sorularınız varsa, ücretsiz danışmanlık için bizimle iletişime geçin .
Svitlana Varaksina ve Artem Chervichnik tarafından yazıldı.