30 Kasım 2016 Çarşamba

SSL Nedir Ne İşe Yarar ?


      
        SSL ve Kullanım Amacı Nedir?


       SSL'in açılımı, Secure Sockets Layer (Güvenli Giriş Katmanı)'dır. SSL, güvenlik prosedürü çerçevesinde server ile alıcı iletişimi sırasında verilerin şifrelenmesi işlemidir. En bilinen kullanımı ise, web sitelerinin web servisleri ile veri alışverişi sırasında, server ile browserlar arasındaki iletişimin şifrelenmesidir.

        SSL, standart bir algoritmadan oluşmaktadır. Güvenli veri iletişimi için birçok web sitesi SSl teknolojisini kullanmaktadır. SSL işleminin çalışması için server tarafında bir anahtar ve alıcı tarafında çalışacak bir sertifika olması gerekmektedir.

        SSL Sertifikaları Hakkında Genel Bilgiler:

 1-  SSL sertifikaları, site adreslerinin doğruluğunu kontrol eden, iki nokta arasındaki veri iletişimini şifreli kanal üzerinden yaparak güvenli bir şekilde yapılmasını sağlayan bir üründür. Ancak SSL sertifikaları hiç bir zaman yazdığımız kodun veya web sitelerinin virüslere karşı güvenliğini sağlamaz. 

2-  SSL sertifikaları sundukları garantiye, destek hizmetine ve ek özelliklere göre farklılık arz etmektedirler. Temelde tüm sertifkaların sağladığı teknik kazanım aynıdır.

3- SignSec, Comodo, Rapid ürünleri, SSL kullanmak isteyen tüm tekil internet adresleri için uygundur.

4- Wildcard SSL ürünleri internet adresindeki alt isimleri de destekler. Örneğin; www.isimtescil.net, isimtescil.net, admin.isimtescil.net, *.isimtescil.net

5- SSL network üzerindeki bilgi transferi sırasında güvenlik ve gizliliğin sağlanması amacıyla Netscape tarafından geliştirilmiş bir güvenlik protokolüdür.

6- SSL gönderilen bilginin kesinlikle ve sadece doğru adreste deşifre edilebilmesini sağlar. Bilgi gönderilmeden önce otomatik olarak şifrelenir ve sadece doğru alıcı tarafından deşifre edilebilir. Her iki tarafta da doğrulama yapılarak işlemin ve bilginin gizliliği ve bütünlüğü korunur.

7- Veri akışında kullanılan şifreleme yönteminin gücü kullanılan anahtar uzunluğuna bağlıdır. Anahtar uzunluğu bilginin korunması için çok önemlidir. Örneğin; 8 bit üzerinden bir iletimin çözülmesi son derece kolaydır. Bit, ikilik sayma düzeninde bir rakamı ifade eder. Bir bit, 0 veya 1 olmak üzere 2 farklı değer alabilir. 8 bit ise sadece 28=256 olası farklı anahtar içerir. Bir bilgisayar bu 256 farklı olasılığı sıra ile inceleyerek bir sonuca ulaşabilir. SSL protokolünde 40 bit ve 128, 256, 1024 bit şifreleme kullanılmaktadır. 128 bit şifrelemede 2128 değişik anahtar vardır ve bu şifrenin çözülebilmesi çok büyük bir maliyet ve zaman gerektirir. Kötü niyetli bir kişinin 128 bit'lik şifreyi çözebilmesi için 1 milyon dolarlık yatırım yaptıktan sonra 67 yıl gibi bir zaman harcaması gerekir. Bu örnekten anlaşıldığı gibi SSL güvenlik sistemi tam ve kesin bir koruma sağlar.


     Özellikleri :

  • - Mesajların şifrelenmesi ve deşifre edilmesindeki güvenlik ve gizliliği sağlar.
  • - Mesajı gönderenin ve mesajı alanın doğru yerler olduğunu garanti eder.
  • - İletilen dokümanların tarih ve zamanını doğrular.
  • - Doküman arşivi oluşturulmasını kolaylaştırır.
  • - Gelen verinin kodlaması ve şifreyi çözmesi esnasında güvenlik ve gizliliği sağlar
    - Veriyi gönderenin ve veriyi alanın doğru yerler olduğunu garanti eder.

  •  Sertifikasyon Kurumu
          Dijital sertifikaların verilmesi ve yönetilmesini gerçekleştiren kurumlardır. Dijital sertifikalar bu kurumların gizli anahtarıyla imzalanır. Türkiye’deki SSL desteği veren firmalar, yurtdışındaki firmaların temsilciklerini yapmaktadır. Bu yüzden kimlik doğrulamaları yurtdışında veya yurt dışındaki firmanın formatı üzerinden yapılması gerekmektedir. SSL sertifikaları bütün internet tarayıcılarında büyük oranda sorunsuz şekilde desteklemekte ve çalışmaktadır
          SSL Nasıl Çalışır ?
          SSL Public Key/Private Key adı verilen anahtarların kullanımına dayalı bir kodlama yöntemine dayalıdır.
          SSL kodlama için iki adet anahtar bulunmaktadır. Bu anahtarlar, dijital ortamda kodlanmış yazılımlardır. Bir anahtarın kitlemiş olduğu veriyi, sadece diğer anahtar açabilir. Anahtarlarınızı yarattıktan sonra (SSL default olarak bu işlemi yapmaktadır, sizin herhangi bir işlem yapmanıza gerek yoktur), anahtarlardan biri (private key) sizde kalır. Diğer anahtar (public key) ise, bağlantı kurmak istediğiniz kişilere gönderilir.
          Dışarıdan sizinle iletişime geçmek isteyen kişi, public key’i kullanarak mesajı güvenli bir şekilde size gönderir. Veri, size ulaşmadan, transfer sırasında veriye ulaşılsa bile, şifrenin çözülmesi için sizde bulunan private key gerekecektir. SSL türüne göre 40 bit veya 128 bit şifreleme kullanılmaktadır. Bu karmaşıklıktaki şifrelemenin çözülmesi ileri tekniklerle dahi çok zaman alacaktır.
          Kısaca SSL veri alışverişi yapan bilgisayarların, herhangi bir kişinin veriye müdahale etmesini önleyerek, sadece veri alışverişi yapan bilgisayar arasında, güvenli bir şekilde verinin aktarılmasını sağlar.
          
      

29 Kasım 2016 Salı

C# AcceptButton - CancelButton


C#'da Klavye Üzerinden Enter ve Esc Tuşlarını Form Üzerindeki Buttonlara Yönlendirme:

C#'da klavyeden enter ve esc tuşlarının form üzerindeki buttonlara yönlendirmek için form özelliklerinden AcceptButton ile CancelButton ayarlarına form üzerindeki butonlardan hangisine atamak istiyorsak bu iki özelliğin karşısına o buttonların adlarını yazmamız gerekir. 

Accept Button: Form üzerinde Enter tuşuna basıldığında çalıştırılacak olan butonu belirlememizi sağlar.
Cancel Button: Form üzerinde ESC tuşuna basıldığında çalıştırılacak olan butonu belirlememizi sağlar.



Form üzerinde bulunan butonlardan istenilen butona AcceptButton özelliği verilebilir. Bunu yapmak için Form üzerinde boş bir alan fare ile tıklanır. Daha sonra properties penceresinde AcceptButton özelliğinde hangi butona bu özellik verilmek isteniyorsa o buton seçilir.
Bu işlemin aynısı CancelButton için uygulanabilir. Ayarlanan butona yazılacak kodlar klavyeden “ESC” tuşuna basıldığında çalışacaktır.


12 Kasım 2016 Cumartesi

Veritabanından E-Mail Gönderme


PostgreSQL Veritabanı Yönetim Sisteminden E-Mail Gönderme:  Bu yazımda postgresql üzerinde yazılmış bir fonksiyon aracılığıyla kullanıcılara nasıl mail gönderebileceğimizi anlatacağım. Mail göndermede kullandığım fonksiyon pl/tcl dilinde kodlandığı için ilk olarak postgresql'in tcl dil desteği eklentisini yüklememiz gerekecektir.

- PostgreSQL veritabanı yönetim sistemi birden fazla dil desteği sunmaktadır, desteklenen diller PL adı altında pgAdmin arayüzünden, Databases - <kullandığımız veritabanının adı> - Extensions - New Extension.. sekmelerini takip ettiğimizde karşımıza çıkan eklentiler arasında yer alır. PostgreSQL in sql dili için kullandığı default dil 'plpgsql' dir. Extensions olarak karşımıza çıkabilecek desteklenen diğer diller ise, plperl,plpython,pltcl dilleri procedural diller olarak geçmektedir. Saydığım bu dillerin haricinde postgresql  xml,java,php yazılım dillerini de procedural olarak destekleyebilmektedir. Procedural dememizdeki kasıt, bu yazılım dillerini kullanarak pgAdmin konsolunda fonksiyon veya procedure yazarak sql ifadelerinde olduğu gibi yazdığımız fonksiyon veya prosedürleri select ile çağırarak istediğimiz yerde kullanabileceğiz.


 - Aşağıdaki mail göndermede kullandığım fonksiyonu çalıştırabilmemiz için postgresql'in pl/tcl desteğini sağlamamız gerekir. PostgreSQL'de procedural dil desteğinin nasıl sağlandığına dair daha fazla bilgi edinmek isteyen konuyu buradan takip edebilir.


CREATE OR REPLACE FUNCTION send_pgmail( text, text, text, text)
  RETURNS integer AS
$BODY$
set mailfrom $1
set mailto $2
set mailsubject $3
set mailmessage $4
set myHost "<sunucu adresi>" -- buraya maili hangi mal server üzerinden gönderecekseniz o mail server'in host adresini yazmanız gerekmektedir.
set myPort 25 -- buraya kullandığınız port numarasını yazmanız gerekir, yazmanız taktirde sistem default olarak 25 portu üzerinden mail göndermeyi deneyecektir.
set mySock [socket $myHost $myPort]
set toemailaddress_start [string first "<" $mailto]
if {$toemailaddress_start != -1} {
set toemailaddress_finish [string first ">" $mailto]
set toemailaddress_start [expr $toemailaddress_start + 1]
set toemailaddress_finish [expr $toemailaddress_finish - 1]
set toemailaddress [string range $mailto $toemailaddress_start $toemailaddress_finish]
} else {
set toemailaddress $mailto
}
set fromemailaddress_start [string first "<" $mailfrom]
if {$fromemailaddress_start != -1} {
set fromemailaddress_finish [string first ">" $mailfrom]
set fromemailaddress_start [expr $fromemailaddress_start + 1]
set fromemailaddress_finish [expr $fromemailaddress_finish - 1]
set fromemailaddress [string range $mailfrom $fromemailaddress_start $fromemailaddress_finish]
} else {
set fromemailaddress $mailfrom
}
fileevent $mySock writable [list svcHandler $mySock]
fconfigure $mySock -buffering line
puts $mySock "HELO <veritabanı adresi>" -- kullandığınız veritabanı hangi makinada yüklü ise o makinanın veritabanı sunucu adresini buraya yazmanız gerekmektedir.
gets $mySock name
puts $mySock "MAIL FROM: $fromemailaddress"
gets $mySock name
puts $mySock "RCPT TO: $toemailaddress"
gets $mySock name
puts $mySock "DATA"
gets $mySock name
puts $mySock "From: $mailfrom"
puts $mySock "To: $mailto"
puts $mySock "Subject: $mailsubject"
puts $mySock "MIME-Version: 1.0"
puts $mySock "Content-type: text/plain; charset=UTF-8"
puts $mySock "Content-Transfer-Encoding: 8bit"
puts $mySock ""
puts $mySock "$mailmessage"
puts $mySock ""
puts $mySock "."
gets $mySock name
puts $mySock "QUIT"
gets $mySock name
close $mySock
return 1$BODY$

  LANGUAGE pltclu VOLATILE




Fonksiyonun SQL Editörde Kullanımı:
  select send_pgmail('gonderen@mail.com','alici@mail.com','mail konusu','mail icerik');