Şifre güvenliği

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Şifre güvenliği

Mesaj gönderen Serhat »

Merhaba,

Yaptığım programından verileri web de bulunan databaseye kayıt yapılıyor, programın son kullanıcısı seçme şansım olmadığından,
adamın biri database şifrelerini program içinden almış, web sitemi çökertildi ve databasedeki kayıtları silmiş...
Sayın arkadaşlar tekrar aynı durumla karşı karşıya kalmamak için xe5 kullanıyorum FDConnection Mysql şifrelerimi nasıl gizliye bilirim veya başka bir çözümü var mı?.


saygılarımla...
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: Şifre güvenliği

Mesaj gönderen mustafasoy »

sql injectiona karşı önlem almalısın
mysqli_real_escape_string
mysql_real_escape_string fonksyonlarını kullanabilirsin

mysql in fonksyonlarından md5 i kullanarak şifreleri güvenli hale getirebilirsin

veritabanının yolunu ve ismini standart dışı verebilirsin

daha sayılabilir ama bunları bile alman ciddi güvenlik açıklarını engelleyecektir.
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: Şifre güvenliği

Mesaj gönderen warder »

Programdan uzak veri tabanına kullanıcı adı ve şifre ile doğrudan bağlanmamak gerektiği sıkça işlenen bir konu. Geçmiş olsun.
Programdan doğrudan bağlanmakta ısrarcıysanız ilgili bilgileri şifreli saklayıp gerektiğinde çözüp kullanabilirsiniz.
Rakibinizin işini biraz daha zorlaştırmış olursunuz.
Benim tavsiyem aracı kullanmanız yönünde olur.
-Veri tabanında yapılacak işleri yerel bir dosyaya (php, vs.) yaptırıp, programınızdan o dosya ile iletişim kurabilirsiniz.
-Datasnap teknolojisini araştırabilirsiniz.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Şifre güvenliği

Mesaj gönderen Serhat »

Selam...

Mecburen programdan web de bulunan databaseye bağlanmak zorundayım çünkü programı kullananların, kullanıcı bilgileri var vs. gibi.

Datasnap olarak forumda arama yaptığımda 14 sayfa var hepsini tek, tek okudum fakat nasıl yapıldığına dair konu bulamadım...
(Veri tabanında yapılacak işleri yerel bir dosyaya (php, vs.) yaptırıp, programınızdan o dosya ile iletişim kurabilirsiniz) bu işlemi nasıl yapabilirim web sitem asp...
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: Şifre güvenliği

Mesaj gönderen warder »

Serhat yazdı: (Veri tabanında yapılacak işleri yerel bir dosyaya (php, vs.) yaptırıp, programınızdan o dosya ile iletişim kurabilirsiniz)
bu işlemi nasıl yapabilirim web sitem asp...
programınızdan belirlediğiniz anahtar sözcüklerle talep gönderip, asp dosyanızdan gelen talepleri işleyip cevaplayabilirsiniz.
Örneğin yaptığım bir programda aynen bu durumu kullandım.
php tarafından da zararsız bir örnek paylaşayım.
Örnekte versiyon kontrolu yapılıyor.

Kod: Tümünü seç

$satirSonAyrac = ";";
......
 if($talep == "guncelse") {
    $Sql = "select * from guncelpro";
    $Secim = $Db->query($Sql)->fetch();
    if(intval($Secim['versiyon']) > intval($versiyon)) {
        echo $talep.$satirSonAyrac.$Secim['versiyon'].$satirSonAyrac.$Secim['webadres'].$satirSonAyrac.$Secim['webklasor'].$satirSonAyrac.$Secim['webdosya'];
    }
    else {
        echo $talep.$satirSonAyrac.$Secim['versiyon'];    
    }
    exit();
}
Her dönen bilginin başında talep sözcüğü standart var. O da farklı bir detaylı konu. Programın iç işleriyle ilgili...
php ile gelen talepleri alıp işledikten sonra cevap dizisinin aralarında ";" karakteri kullanıyorum.
Programda gelen bilgiyi StringList e veriyorum.

Kod: Tümünü seç

	TStringList * sList = new TStringList;
	sList->Delimiter       = ';'; 
	sList->StrictDelimiter = true;
	sList->DelimitedText   = WebTalep("guncelse");
	DataMod->QSabit->SQL->Clear();
	DataMod->QSabit->SQL->Add("SELECT * FROM sabit");
	DataMod->QSabit->Active = true;
	if (DataMod->QSabit->FieldByName("VERSIYON")->AsString != sList->Strings[1]) { 
		UnicodeString usDosya = ReplaceStr(sList->Strings[4], ".exe", "");
              .......................
WebTalep adlı fonksiyonumda ihtiyacıma göre çeşitli string leri talebe çevirip (beraberinde bir çok güvenlik ve tanıtıcı bilgiyle birlikte) belirtilen adrese post ediyorum.
Fonksiyonundan dönen bilgiyi de çeşitli şekillerde işliyorum.
Yukardaki örnekte bunlardan birisi.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Şifre güvenliği

Mesaj gönderen Serhat »

Hocam elinize sağlık bu işlemi biraz karışık geldi bana...


Program üzerinden güvenliği nasıl yapabilirim? Datasnap veya md5 gibi bu konular forumda çokça konuşulmuş fakat yöntem hakkında maalesef ki bilgi yok...
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Şifre güvenliği

Mesaj gönderen barisatalay »

Serhat yazdı:Hocam elinize sağlık bu işlemi biraz karışık geldi bana...


Program üzerinden güvenliği nasıl yapabilirim? Datasnap veya md5 gibi bu konular forumda çokça konuşulmuş fakat yöntem hakkında maalesef ki bilgi yok...

Aşağıdaki şekilde XE5di sanırım çalışıyordu bir kontrol edebilirsiniz MD5 için.

Kod: Tümünü seç

Uses IdHashMessageDigest; // Mutlaka ekliyoruz.  

//Kullanımı  
  
//Örneğin site ismimizi MD5 teknik ile şifreleyelim  
  
IdMD5.HashStringAsHex('brsatalay.com');  
  
//Dönen değer aşağıdakidir.  
  
{E3BACBDA1115398D93FC2EFC06DA663E}  
  
procedure TForm10.Md5ButtonClick(Sender: TObject);  
var  
IdMD5: TIdHashMessageDigest5;  
begin  
IdMD5 := TIdHashMessageDigest5.Create;  
try  
Memo1.Text := Memo1.Text + IdMD5.HashStringAsHex(edit1.Text) + #13+#10;  
finally  
IdMD5.Free;  
end;  
end;  

http://brsatalay.blogspot.com.tr/2014/0 ... eleme.html
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Şifre güvenliği

Mesaj gönderen Serhat »

Selam,

MD5 yöntemi bana biraz mantıklı ve kolay geldi, web siteme örnek: md5.asp ekleyeceğim sonra bunu delphide çevirip FDConnection şifre bilgilerini çekeceğim sanırım sizi doğru anladım.

Faka kafama bir şey takıldı yaptığım programı hackleyen kişi md5 koklamasını gördüğünde yine benim database bilgilerimi elde etmiyor mu burada nasıl bir önlem alabilirim...




barisatalay yazdı:
Serhat yazdı:Hocam elinize sağlık bu işlemi biraz karışık geldi bana...


Program üzerinden güvenliği nasıl yapabilirim? Datasnap veya md5 gibi bu konular forumda çokça konuşulmuş fakat yöntem hakkında maalesef ki bilgi yok...


Aşağıdaki şekilde XE5di sanırım çalışıyordu bir kontrol edebilirsiniz MD5 için.

Kod: Tümünü seç

Uses IdHashMessageDigest; // Mutlaka ekliyoruz.  

//Kullanımı  
  
//Örneğin site ismimizi MD5 teknik ile şifreleyelim  
  
IdMD5.HashStringAsHex('brsatalay.com');  
  
//Dönen değer aşağıdakidir.  
  
{E3BACBDA1115398D93FC2EFC06DA663E}  
  
procedure TForm10.Md5ButtonClick(Sender: TObject);  
var  
IdMD5: TIdHashMessageDigest5;  
begin  
IdMD5 := TIdHashMessageDigest5.Create;  
try  
Memo1.Text := Memo1.Text + IdMD5.HashStringAsHex(edit1.Text) + #13+#10;  
finally  
IdMD5.Free;  
end;  
end;  

http://brsatalay.blogspot.com.tr/2014/0 ... eleme.html
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: Şifre güvenliği

Mesaj gönderen dogan »

(programı hackleyen kişi md5 koklamasını gördüğünde yine benim database bilgilerimi elde etmiyor mu) Güzel bir soru bende merak ediyorum bu durumda nasıl bir önlem alabiliriz...
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Şifre güvenliği

Mesaj gönderen esistem »

Selam,
Sanırım uzaktaki bir veritabanına exe dosyanızdan bağlanıp veri çekiyorsunuz, bunuda mecburen veritabanının şifrelerini exe dosyada tanıtıp yapmanız gerekiyor diye düşünüyorsunuz (ki zaten öyle olmalı). Öncelikle ilk yöntem exe dosyanızı bir pack programı ile sıkıştırmanızdır ki string ifadeler kabak gibi meydanda görünmesin, çözmek isteyen kişi önce exe yi unpack yapmak zorunda kalsın. Onu geçersede bu sefer şöyle bir yöntem uygulayın, nasıl olsa web üstünde bir VT ye bağlanıcaksınız, oluşturun bir php yada asp sayfası, önce programdan bu sayfaya idhttp ile bir değer gönderin, en basiti mesela, xxx.com/ver.php?deger=abcdef burdaki abcdef de şifrelenmiş bir veri olsun, hatta bu giden değer her saat farklı olsun ki her defasında papağan gibi aynı değer gitmesin karşıya (zira buda dikkat çeker), bunu alan php yada asp sayfası önce bu şifreyi çözsün, çözülen şifre içeriği mesela "sifreyiver" stringi ise VT nin orjinal şifresini şifreleyip geriye onu döndürsün, sizde gelen değeri bir fonksiyon yada dll ye gönderip result çıktısını şifre olarak gönderin. Hatta işi abartıp, veritabanı yoluda şifreli gelsin. Böylece exe kodlarına bakan kişi bir sürü algoritma görsün.
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Şifre güvenliği

Mesaj gönderen Serhat »

[quote="esistem"]Selam,

Selam,

Exe dosyasını pack programı ile sıkıştırmak için hangi programı kullanmalıyım?
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: Şifre güvenliği

Mesaj gönderen dogan »

Selam,

Exe dosyasını pack programı ile sıkıştırmak için hangi programı kullanmalıyım?[/quote]



Yanılmıyorsam hackları biraz daha fazla uğraştırmak için tüm derlemeyi bitirdikten sonra winrar ile exeyi sıkıştıra işlemi yapabilirsiniz...
Cevapla