https://www.buraksenyurt.com/Burak Selim Şenyurt - .Net Temelleri2017-02-27T12:30:06+00:00Matematik Mühendisi Bir Bilgisayar Programcısının NotlarıBurak Selim SenyurtBlogEngine.Net Syndication Generatorhttps://www.buraksenyurt.com/opml.axdBurak Selim SenyurtMatematik Mühendisi Bir Bilgisayar Programcısının Notlarıtr-TRBurak Selim Şenyurt0.0000000.000000https://www.buraksenyurt.com/post/tek-fotolu-ipucu-153-config-sekmesini-harici-dosyadan-okumakTek Fotolu İpucu 153 - Config Sekmesini Harici Dosyadan Okumak2017-02-27T02:00:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>Uygulamalarımıza ait pek çok parametrik bilgiyi zaman zaman config uzantılı dosyalar içerisinde tuttuğumuz çok olmuştur. Web tabanlı uygulamalar ve servislerde web.config, exe tipi uygulamalarda ise app.config dosyaları söz konusudur. Bu dosyalarda standard olarak kullanılan içerikler mevcuttur. appSettings, connectionStrings sanıyorum ki en popüler olanlarındandır. Peki bu tip konfigurasyon segmentlerinin harici dosyalardan da alınabileceğini biliyor muydunuz? Örneğin uygulamanın appSettings içeriğinin farklı bir dosyadan gelmesini sağlayabiliriz <em>(appSettings içerisine alınacak olan key:value çiftlerinin çok kalabalık olduğu senaryolarda bu teknik oldukça işe yarayabilir)</em> Nasıl mı? Aynen aşağıdaki ekran görüntüsünde olduğu gibi.</p>
<p><img src="https://www.buraksenyurt.com/image.axd?picture=/2017/03/tfi153.gif" alt="" /></p>
<p>Burada önemli olan app.config dosyası içerisindeki appSettings elementinde kullanılan configSource niteliğidir. Bu nitelikte ilgili segmentin hangi dosyadan okunacağı belirtilir. Örnekte kullanılan ApplicationParameters.config için dikkat edilmesi gereken bir kaç nokta vardır. Bunlardan birisi sadece yerine geçecek segment içeriğini taşımasıdır. Yani sadece <appSettings> elementini bulundurmalıdır<em>(Console.WriteLine'daki {0} yerine bir içerik geldiğini hayal edelim)</em> Diğer yandan dosyanın mutlaka asıl konfigurasyon dosyası ile aynı yerde olması beklenir<em>(Bu örnekte app.config ile)</em> Dolayısıyla "Copy to Output Directory" özelliğinin "Copy if Newer" veya "Copy Always" olması gerekmektedir. Bir başka ipucunda görüşmek dileğiyle hepinize mutlu günler dilerim.</p>2017-02-27T02:00:00+00:00.netc#configuration managementConfigurationManagerconfigSourcebsenyurtUygulamalarımıza ait pek çok parametrik bilgiyi zaman zaman config uzantılı dosyalar içerisinde tuttuğumuz çok olmuştur. Web tabanlı uygulamalarda web.config veya exe tipi uygulamalarda app.config gibi. Bu dosyalarda standart olarak kullanılan içerikler mevcuttur. appSettings, connectionStrings sanıyorum en popüler olanlarından. Peki bu tip konfigurasyon segmentlerinin harici dosyalara refere edilebileceğini biliyor muydunuz? Örneğin uygulamanın appSettings içeriğinin farklı bir dosyadan gelmesini sağlayabiliriz. Nasıl mı?https://www.buraksenyurt.com/pingback.axdhttps://www.buraksenyurt.com/post.aspx?id=964629f7-8981-4587-860a-f418cf4f151b0https://www.buraksenyurt.com/trackback.axd?id=964629f7-8981-4587-860a-f418cf4f151bhttps://www.buraksenyurt.com/post/tek-fotolu-ipucu-153-config-sekmesini-harici-dosyadan-okumak#commenthttps://www.buraksenyurt.com/syndication.axd?post=964629f7-8981-4587-860a-f418cf4f151bhttps://www.buraksenyurt.com/post/tek-fotoluk-ipucu-149-securestring-ile-caydiricilikTek Fotoluk İpucu 149 - SecureString ile Caydırıcılık2017-01-04T21:23:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>Elimizde veritabanı bağlantı bilgisi, kullanıcı şifresi, uygulamamıza özel port numaraları, finansal oranlar gibi hassas olabilecek içerikleri tutan bir sınıf olduğunu düşünelim. Bu sınıfı kullanmak için doğal olarak bir şekilde örneklenmesi gerekir. Nesnenin kullanılabilir olması içeriği ile birlikte belleğe açılması anlamına da gelir. Uygulama, .Net'in çalışma zamanı ortamında kendisi için oluşturulan Application Domain içerisinde yaşar.</p>
<p>Peki bu metinsel içeriklerin bellekte güvenli bir şekilde durduklarını söyleyebilir miyiz? Belleğe açılan uygulamaların izlerini takip etmek aslında mümkün. RedGate ve benzeri araçlar yada uygulamanın çalışma zamanındaki bellek hareketliliklerini indiren Memory Dump programları ile bu mümkün olabilir. Dolayısıyla belleğe alınmış bir değişken içeriğinin güvenli şekilde saklanmasını sağlamamız önemlidir. SecureString sınıfı bu ihtiyacı karşılamak için kullanılan .Net sınıflarındandır. Nasıl mı? Aynen aşağıdaki fotoğrafta görüldüğü gibi.</p>
<p><img src="https://www.buraksenyurt.com/image.axd?picture=/2016/12/tfi149_1.gif" alt="" /></p>
<p>SecureString sınıfını örnekledikten sonra string içeriğin önce karakter katarına dönüştürülmesi sonra her bir karakterin AppendChar sınıfı ile ilave edilmesi söz konusu. MakeReadOnly çağrısı ile ilgili nesne örneğinin Immutable olması sağlanmakta. Protect fonksiyonunu extension metod olarak yazdığımıza dikkat edelim. Tabii buradaki beklenti myPassword değişkeninin şifrelenmiş olarak ekrana basılması değil. Konu, belleğe yerleşen değişken içeriğinin okunma ihtimaline karşı şifrelenerek korunması.</p>
<p>Elbette SecureString ile koruma altına aldığımız içerikleri çalışma zamanı içerisinde elde etmemiz mümkün. Aşağıdaki kod parçası bunun sağlaması gibi düşünülebilir. </p>
<p><img src="https://www.buraksenyurt.com/image.axd?picture=/2016/12/tfi149_2.gif" alt="" /></p>
<p>Hafiften StringExtensions sınıfımızı ve Protect metodumuzu bozduk. Marshal tipine ait fonksiyonellikleri kullanarak da Unmanaged Code tarafına geçerek CLR dışı alanlara bulaştık. Sadece işin sağlaması için yaptığımızı tekrar belirtelim. Böylece geldik bir ipucunun daha sonuna. Tekrardan görüşünceye dek hepinize mutlu günler dilerim.</p>2017-01-04T21:23:00+00:00securitytek fotoluk ipucu.netc#securestringbsenyurtElimizde veritabanı bağlantı bilgisi, kullanıcı şifresi, uygulamamıza özel port numaraları, finansal oranlar gibi hassas olabilecek içerikleri tutan bir sınıf olduğunu düşünelim. Bu sınıfı kullanmak için doğal olarak bir şekilde örneklenmesi gerekir. Nesnenin kullanılabilir olması içeriği ile birlikte belleğe açılması anlamına da gelir. Uygulama, .Net'in çalışma zamanı ortamında kendisi için oluşturulan Application Domain içerisinde yaşar.https://www.buraksenyurt.com/pingback.axdhttps://www.buraksenyurt.com/post.aspx?id=aa47e88c-aaef-4a6f-84f5-6d4ca1a79db70https://www.buraksenyurt.com/trackback.axd?id=aa47e88c-aaef-4a6f-84f5-6d4ca1a79db7https://www.buraksenyurt.com/post/tek-fotoluk-ipucu-149-securestring-ile-caydiricilik#commenthttps://www.buraksenyurt.com/syndication.axd?post=aa47e88c-aaef-4a6f-84f5-6d4ca1a79db7https://www.buraksenyurt.com/post/Fluent-Interface-Prensibi-ile-Daha-Okunabilir-Kod-GelistirmekFluent Interface Prensibi ile Daha Okunabilir Kod Geliştirmek - 1nci Yarı2013-12-23T01:34:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>Keşfedilmesi, anlaşılması ve okunması kolay kod geliştirmek, özellikle dışarıya açık arayüzü bulunan API’ ler için oldukça önemlidir. Bir <strong>Domain Specific Language</strong>’ in olmassa olmazı kodun kolayca keşfedilebilirliğidir. <strong>Ruby</strong> ve <strong>Scala</strong> gibi diller <strong>built-in</strong> olarak bu kolaylığı sunarlar. <strong>LINQ(Language INtegrated Query) </strong>ifadeleri, zincir şeklinde bir birlerine bağlanabilen <strong>Extension</strong> metodlar ile aynı esnekliği vermektedir. Test süreçlerinde kullanılan pek çok <strong>Mock</strong> nesne API’si benzer kabiliyetlere sahiptir. Tüm bunlar aynı prensipten yararlanır. <strong>Fluent Interface</strong>… Bu görsel dersimizde <strong>Martin Fowler</strong> tarafından yıllar önce ortaya konan yaklaşımın uygulanışını incelemeye çalışıyoruz.</p>
<p><iframe src="https://www.youtube.com/embed/lVgz-DeTJhM" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Bir başka görsel dersimizde görüşmek üzere.</p>2013-12-23T01:34:00+00:00fluent interfacefluent apimartin fowlerrubyscalamock nesneunit testdomain driven designdomain specific languagedslbsenyurtKeşfedilmesi, anlaşılması ve okunması kolay kod geliştirmek, özellikle dışarıya açık arayüzü bulunan API’ ler için oldukça önemlidir. Bir Domain Specific Language’ in olmassa olmazı kodun kolayca keşfedilebilirliğidir. Ruby ve Scala gibi diller built-in olarak bu kolaylığı sunarlar. LINQ(Language INtegrated Query) ifadeleri, zincir şeklinde bir birlerine bağlanabilen Extension metodlar ile aynı esnekliği vermektedir. Test süreçlerinde kullanılan pek çok Mock nesne API’si benzer kabiliyetlere sahiptir. Tüm bunlar aynı prensipten yararlanır. Fluent Interface… Bu görsel dersimizde Martin Fowler tarafından yıllar önce ortaya konan yaklaşımın uygulanışını incelemeye çalışıyoruz.https://www.buraksenyurt.com/pingback.axdhttps://www.buraksenyurt.com/post.aspx?id=8a442d30-9eb2-4597-a63d-6391ef5eac437https://www.buraksenyurt.com/trackback.axd?id=8a442d30-9eb2-4597-a63d-6391ef5eac43https://www.buraksenyurt.com/post/Fluent-Interface-Prensibi-ile-Daha-Okunabilir-Kod-Gelistirmek#commenthttps://www.buraksenyurt.com/syndication.axd?post=8a442d30-9eb2-4597-a63d-6391ef5eac43https://www.buraksenyurt.com/post/Net-Uygulama-Guvenligie28093Hacking-ve-Tedbirleri.Net Uygulama Güvenliği–Hacking ve Tedbirleri2013-05-07T13:30:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>Bu görsel dersimizde önce basit bir .Net uygulamasını, <strong>CIL<em>(Common Intermediate Language)</em> </strong>kodları üzerinden Hackliyor ve sonrasında olası tedbirleri deneyerek söz konusu vakayı engellemeye çalışıyoruz. Bunun için komut satırından kolayca kullanılabilen <strong>sn.exe<em>(Strong Name ile uygulamanın işaretlenmesi) </em></strong>ve <strong>SignTool.exe<em>(Uygulamanın bir sertifika ile işaretlenmesi) </em></strong>araçlarını değerlendiriyoruz. Kodun <strong>Obfuscate</strong> edilmesinden bahsediyor ve son olarak sonuçları irdeliyoruz.</p>
<p><iframe src="https://www.youtube.com/embed/gk_IN5_lsRc" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Ara sıra gelen o gıcık öksürük ritmimi bozduğundan sürçü lisan etmişimdir mutlaka. O yüzden affola. Bir başka görsel dersimizde görüşünceye dek hepinize mutlu günler dilerim <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="http://www.buraksenyurt.com/pics/wlEmoticon-winkingsmile_203.png" alt="Winking smile" /></p>2013-05-07T13:30:00+00:00.net securityildasmmakecertilasmcommon intermediate languagestrong namesigntoolsigningapplication securityhackingobfuscatorobfuscatingbsenyurtBu görsel dersimizde önce basit bir .Net uygulamasını, CIL(Common Intermediate Language) kodları üzerinden Hackliyor ve sonrasında olası tedbirleri deneyerek söz konusu vakayı engellemeye çalışıyoruz. Bunun için komut satırından kolayca kullanılabilen sn.exe(Strong Name ile uygulamanın işaretlenmesi) ve SignTool.exe(Uygulamanın bir sertifika ile işaretlenmesi) araçlarını değerlendiriyoruz. Kodun Obfuscate edilmesinden bahsediyor ve son olarak sonuçları irdeliyoruz.https://www.buraksenyurt.com/pingback.axdhttps://www.buraksenyurt.com/post.aspx?id=91d21135-0f7e-4d31-aee6-a82b6498522611https://www.buraksenyurt.com/trackback.axd?id=91d21135-0f7e-4d31-aee6-a82b64985226https://www.buraksenyurt.com/post/Net-Uygulama-Guvenligie28093Hacking-ve-Tedbirleri#commenthttps://www.buraksenyurt.com/syndication.axd?post=91d21135-0f7e-4d31-aee6-a82b64985226