İçindekiler:
- Kullanıcı girişi hakkında varsayım yapmayın
- Tutamaç Başarısızlıkları Zariftir
- Bir Program Günlüğünü Koru
- İyi bir gelişim süreci izleyin
- İyi sürüm kontrolü uygulayın
- Kullanıcıların güvenli bir şekilde kimlik doğrulamasını sağlayın
- Uzak oturumları yönetme
- Kodunuzu karışıklaştırın
- Kodunuzu bir dijital sertifika ile imzalayın
- Gerekirse güvenli şifreleme kullanın
Video: İstediğiniz Bütün Oyun Ve Programlara Hile Yapmak 2019 2024
C ++ programcısı olarak, bilgisayar korsanlarına karşı savunmasız olan programların yazılmasını önlemek için C ++ kodunuzda yapmanız gereken şeyleri öğrenmeniz gerekir. Ayrıca, işletim sisteminiz tarafından destekleniyorsa, Adres Alanı Yerleşim Rasgelemesi (ASLR) ve Veri Yürütme Engellemesi (DEP) gibi özelliklerini açıklayabilirsiniz.
Kullanıcı girişi hakkında varsayım yapmayın
Programcının tünel görüntüsü, erken geliştirme aşamasında iyidir. Bununla birlikte, bir noktada programcı (ya da daha iyisi, kodun geliştirilmesi ile hiçbir ilgisi olmayan başka bir programcı) arkanıza yaslanmalı ve acil problemi unutmalıdır. Kendisi, "Bu program yasadışı girdilere nasıl tepki verecek?" Diye sormalı. “
Girişleri kontrol etme kurallarından bazıları:
-
Girişin uzunluğu konusunda bir varsayım yapmayın.
-
Sabit uzunluk tamponlarınızdaki (veya kullanılan değişken boyutlu tamponlarınızda) yeriniz olduğundan daha fazla girdi kabul etmeyin.
-
Her mantıksal olduğundan emin olmak için her sayısal değer aralığını kontrol edin.
-
Bir hacker tarafından kod enjekte etmek için kullanılabilen özel karakterleri kontrol edin ve filtreleyebilirsiniz.
-
Ham girdiyi bir veritabanı sunucusu gibi başka bir servise geçirmeyin.
Ve uzaktaki servislerden gelen değerler üzerinde aynı kontrolleri yapın. Bilgisayar korsanı girdi tarafında olmayabilir, yanıt tarafında olabilir.
Tutamaç Başarısızlıkları Zariftir
Programınız, program içinde oluşan arızalara makul bir şekilde yanıt vermelidir. Örneğin, bir kitaplık işlevi çağrısı bir nullptr, döndürürse, program bunu algılar ve makul bir şey yapmalıdır.
Makul burada oldukça özgürce anlaşılmalıdır. Program, işlevin makul bir adres döndürmediğini tam olarak anlamaya çalışmak için dolaşmaya gerek duymuyor. Bunun nedeni, mantıksız girdi nedeniyle isteğin gereğinden fazla bellek olması olabilir. Veya kurucu, yasadışı girdi türü tespit etmiş olabilir.
Bu önemli değil. Noktası, programın mümkün olduğunca kendi durumunu geri yüklemesi ve öbek gibi mevcut veri yapılarını çökertmeden veya bozmadan bir sonraki bit girişi için kurması gerektiğidir.
Bir Program Günlüğünü Koru
Birinin güvenlik hatası durumunda olanı yeniden yapılandırmasına izin veren çalışma zamanı günlükleri oluşturun ve bakımını yapın. (Aslında, herhangi bir arıza durumunda bu doğrudur.) Örneğin, muhtemelen birisi sisteminize giriş yaparken veya sisteminizden çıkarsa oturum açmak isteyebilirsiniz.
Bir güvenlik olayı meydana geldiğinde sisteminize kimlerin girdiğini kesinlikle bilmek istersiniz - bu güvenlik riski en çok risk altındaki gruptur ve suçluları ararken en şüphelidir.Buna ek olarak, çoğu istisnayı içeren sistem hatalarını günlüğe kaydetmek isteyeceksiniz.
Gerçek dünya üretim programı, aşağıdakine benzeyen çok sayıda çağrı içerir:
günlük (DEBUG, "Kullanıcı% s girilen yasal şifre", sUser);
Bu sadece bir örnek. Her programın bir miktar günlük işlevi gerekir. Aslında, aslında log () olarak da adlandırılmamaktadır önemsizdir.
İyi bir gelişim süreci izleyin
Her program, iyi düşünülmüş, resmi gelişim sürecini takip etmelidir. Bu işlem en azından aşağıdaki adımları içermelidir:
-
Güvenlik gereksinimleri de dahil olmak üzere gereksinimleri toplayın ve belgeleyin.
-
İnceleme tasarımı.
-
Bir kodlama standardına uyun.
-
Birim testine tabi olun.
-
Orijinal gereksinimlere dayanan resmi kabul testleri yapın.
Buna ek olarak, ihtiyaçların, tasarımın, kodun ve test prosedürlerinin yüksek kalitede olduğunu ve şirket standartlarını karşılayıp karşılamadığını doğrulamak için akran değerlendirme de yapılmalıdır.
İyi sürüm kontrolü uygulayın
Sürüm kontrolü garip bir şeydir. Sürüm 1 hakkında endişelenmemek doğaldır. 1 1. sürümü almak için silahın altındayken ve bekleyen kullanıcının uzatılmış ellerine kapıyı açtığınızda. Bununla birlikte, sürüm denetimi, başlangıçta ele alınması gereken önemli bir konudur çünkü programın başlangıç tasarımına dahil edilmelidir ve daha sonra cıvatalı değildir.
Sürüm denetiminin neredeyse önemsiz bir yönü, kullanıcının hangi sürümünü kullandığını bilmektir. Bir kullanıcı çağırdığında ve "Bunu tıkladığımda yapar" der, yardım masasının gerçekten kullanıcının hangi programı kullandığını öğrenmesi gerekir. Mevcut versiyonunda halihazırda düzeltilmiş olan bir versiyonunda bir problem tarif ediyor olabilir.
Kullanıcıların güvenli bir şekilde kimlik doğrulamasını sağlayın
Kullanıcı doğrulaması basit olmalı: Kullanıcı bir hesap adı ve şifresi sağlıyor ve programınız hesap adını bir tabloda görünüyor ve şifreleri karşılaştırıyor. Parolalar eşleşirse, kullanıcı kimliği doğrulanır. Ancak, anti-hack sorunuyla ilgili olarak hiçbir şey bu kadar basit değildir.
Önce, parolaları hiçbir zaman veritabanında saklayın. Buna, 'ü ' de saklamak denir ve çok kötü bir form olarak kabul edilir. Hacker'ın şifre dosyasına el koyması çok kolay. Bunun yerine, parolanın güvenli bir dönüşümü kaydedin.
Uzak oturumları yönetme
Tüm uygulamanız tek bir bilgisayarda çalıştırıldığında belirli varsayımlarda bulunabilirsiniz. Bir kere, kullanıcı kendisini doğruladıktan sonra onun farklı bir kişiye dönüşmesi konusunda endişelenmenize gerek yoktur. Uzak bir sunucu ile iletişim kuran uygulamalar bu varsayımı yapamaz - hattı dinleyen bir bilgisayar korsanı, kullanıcının kendini kimliğini doğrulayıp oturumu kaçırana kadar bekleyebilir.
Bu durumu önlemek için güvenlik düşünceli programcı ne yapabilir? Kullanıcının şifresini silmek için defalarca bağlantıyı kaçırmadığından emin olmak istemiyorsunuz. Alternatif çözüm, oturumu kurmak ve yönetmektir. Bunu, kullanıcı kendi kendini başarıyla doğruladıktan sonra sunucunun uzaktaki uygulamaya bir oturum çerezi göndererek bunu gerçekleştirirsiniz.
Kodunuzu karışıklaştırın
Kodun karmaşıklığı , bir yürütücünün bir bilgisayar korsanının mümkün olduğunca anlamasını zorlaştırır.
Mantık basittir. Bilgisayar korsanının kodunuzun çalışma biçimini anlaması, hacker'ın güvenlik açıklarını bulması kolaylaşır.
Alabileceğiniz en basit adım, programınızın hata ayıklama simgesi bilgisi içermeyen bir Release sürümü dağıtmanızı sağlamaktır. Proje dosyasını ilk kez oluştururken, bir Hata Ayıklama ve Sürüm sürümünün oluşturulması gerektiğini seçtiğinizden emin olun.
Uygulamanızın sürümlerini içeren, hiçbir zaman, simge bilgileriyle birlikte dağıtmayın.
Kodunuzu bir dijital sertifika ile imzalayın
Kod imzalama, yürütülebilir kodun güvenli bir karmasını üretip geçerli bir sertifika yetkilisi tarafından verilen bir sertifika ile birleştirerek çalışır. Süreç şöyle işliyor: Programı oluşturan şirket, kendisini öncelikle sertifika yetkililerinden birine kaydettirmelidir.
Sertifika yetkilisi, Şirketimin geçerli bir yazılım şirketi olduğuna inandığında bir sertifika verir. Bu, bu sertifikanın sahibinin ünlü San Antonio Şirketim olduğunu doğrulamak için kullanabileceği uzun bir sayıdır.
Gerekirse güvenli şifreleme kullanın
Herhangi bir iyi uyarı gibi, bu uyarı da birkaç parçaya sahiptir. Önce, "Gerekirse şifreleme kullanın. "Bu, Internet üzerinden banka hesap bilgilerini iletmek için düşünceleri aklınıza getiriyor ancak bundan daha genel düşünmelisiniz.
İnternet üzerinden isterse daha küçük bir aralık üzerinden iletilen veriler genellikle Hareketli Veri olarak bilinir. Hareketli Veri, bir bilgisayar korsanına uygun olmadığı sürece şifrelenmelidir.
Diskteki veriler Dinlenme Zamanı Verileri olarak bilinir. Bu veriler, disk kaybolması, çalınması veya kopyalanması ihtimalinin olması durumunda da şifrelenmelidir. İşletmeler, bir dizüstü bilgisayarın havaalanındaki güvenlik tarayıcısında çalınması veya takside bir yerde bırakılması durumunda, sabit diskleri şirket dizüstü bilgisayarlarında düzenli olarak şifreliyor.
Parmak izi sürmek gibi küçük taşınabilir depolama aygıtları, kaybolma konusunda özellikle hassastır - bu aygıtlardaki veriler şifrelenmelidir.