Java Tasarım Seçenekleri – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Java Tasarım Seçenekleri
Tasarım esnekliği için, çekirdek dosyaların listesini ChatFileList.class adlı bir yapılandırma dosyasından okuyacağız. Bilgisayar korsanlarının kafasını karıştırmak için, içeriği metin olmasına rağmen liste dosyasına bir .class uzantısı verdik.
Geliştirme sırasında, bu dosya CovertJava/conf dizininde tutulacak, ancak build.xml dosyasını, ChatFileList.class’ı covertjava.protect paketindeki sınıflarla birlikte covertjava/protect dizinine kopyalamak için değiştireceğiz. Liste 19.6, build.xml dosyasına eklenen <kopya> görevini gösterir.
Dosya listesini normal bir sınıf dosyası olarak gizlemek için fazladan 15 dakika harcamak çabaya değer çünkü önemsiz bir koruma yöntemini bir bilgisayar korsanı için daha az belirgin hale getirir. Artık covertjava.protect paketinde IntegrityProtector sınıfının geliştirilmesine geçebiliriz.
Önce bir metin dosyasının içeriğini okuyan (Chat için ChatFileList.class gibi) birkaç yardımcı yöntem yazmalı ve onu bir dize dizisi oluşturmak için ayrıştırmalıyız. IntegrityProtector.java dosyasını src/covertjava/protect dizininde açarsanız, yardımcı yöntemlerin uygulamalarını görebilirsiniz.
ReadFilePathsFromResource(), readFilePathsFromFile() ve readFilePathsFromString(). Artık, belirli bir dosya yolu listesi için bir sağlama toplamı üreten bir yöntemi kodlayabiliriz. Daha sonra getFilesCheckSum() yöntemini IntegrityProtector’a ekliyoruz ve gösterildiği gibi uyguluyoruz.
Yöntem, dosya adları dizisini yineleyerek, her dosyanın boyutunu bayt cinsinden toplam boyuta ekler. Toplam boyut hesaplandıktan sonra, toByteArray() adlı bir yardımcı yöntem kullanılarak bir bayt dizisine dönüştürülür. getFilesCheckSum() daha sonra bir mesaj özet algoritması SHA-1’in (Sun JCE tarafından sağlanan Güvenli Karma Algoritma) bir örneğini alır ve toplam boyutun bir karmasını alır.
Sağlama toplamının bir metin dosyasında saklanması gerektiğinden, baytları insan tarafından tanınan ASCII karakterlerine dönüştürmemiz gerekir. Yazdırılamayan karakterler ürettiği için bayt değişkenlerini basitçe char türüne atayamayız (örneğin, bayt değeri 7 bir bip sesi çıkarır ve bayt değeri 8 bir geri boşluk üretir).
Bu sorunun standart çözümü base64 kodlamasıdır. Base64 kodlaması, yalnızca 64 yazdırılabilir karakter içeren bir ASCII kodu alt kümesi kullanır. Alt küme, A–Z ve a–z karakterlerini, 0–9 rakamlarını ve noktalama işaretleri gibi birkaç diğer güvenli karakteri içerir.
Daha az karakter kullanıldığı için base64, ASCII karakterleri için kullanılan 8 bit yerine karakter başına 6 bit ayırır. Sonuç olarak, 3 bayt giriş verisi, 4 bayt çıkış verisine kodlanır. IntegrityProtector, bir dosyanın sağlama toplamının yazdırılabilir bir temsilini elde etmek için sun.misc paketinde bulunan Base64Encoder sınıfını kullanır.
Artık dosyanın sağlama toplamını alabildiğimize göre, bunu Chat kurulumunun bütünlüğünü doğrulamak için kullanacağız. Belirli bir dosya listesi için sağlama toplamını çıkarmak için IntegrityProtector’ın main() yöntemini kodlayacağız. Listeleme, main() yönteminin gövdesini gösterir.
main() yöntemi, liste dosyasını (bizim durumumuzda conf/ ChatFileList.class) belirten bir parametreyi ve dosyalar için ana dizini (bizim durumumuzda dağıtım) veren isteğe bağlı bir parametreyi alır.
Design Patterns Türkçe PDF
Yazılım tasarım desenleri PDF
Java design patterns
Tasarım Desenleri Java
Tasarım Desenleri ve Mimarileri
Tasarım Desenleri C
Tasarım Desenleri Ders Notları
Tasarım desenleri pdf Notları
Tasarım desenleri pdf
Kolaylık sağlamak için, CovertJava/bin dizinine Chat sağlama toplamını çıkarmak için IntegrityProtecor kullanan bir toplu iş dosyası getChatChecksum.bat ekledik. Ant serbest bırakma göreviyle Chat dağıtımını oluşturduktan sonra getChatChecksum.bat’ı çalıştırmak aşağıdaki çıktıyı verir.
Chat’in çekirdek dosyası her değiştiğinde (örneğin, lib/chat.jar’ı yeniden oluşturduğunuzda), sağlama toplamı farklıdır. Ancak dosya boyutları değişmezse sağlama toplamı aynı kalır ve bu da potansiyel olarak korumada bir delik açar. Gerçek dosya içeriğine dayalı bir sağlama toplamı almanın daha güvenli olmasının nedeni budur; ancak, bilgisayar korsanlarının çoğu dosya boyutunu değiştirme zahmetine girmez, bu nedenle basit mekanizmamız bile Chat için çalışır.
Artık Chat conf dizinine chat.properties adlı bir yapılandırma dosyası ekleyebiliriz. Dosyanın içinde, Chat dağıtımının sağlama toplamını chat.versionInfo özelliğinin değeri olarak saklayacağız. Bir kez daha, bilgisayar korsanlığını zorlaştırmak için mülk için sezgisel bir ad kullanmaktan kaçınıyoruz.
Nihai görevimiz, başlangıçta, Chat uygulamasının dosyaları için mevcut sağlama toplamını yapılandırma dosyasından okunan sağlama toplamına karşı doğrulamasını sağlamaktır. ProtectedChatApplication’ın main() yönteminin bunu yapan kısmı gösterilir.
Orijinal sağlama toplamını ve korunan dosyaların listesini okuduktan sonra, yöntem, içeriğin bütünlüğünü sağlamak için IntegrityProtector’ın iddiaFilesIntegrity() yöntemini kullanır. Listeleme’de gösterilen iddiaFilesIntegrity(), verilen dosya listesi için basitçe getFilesChecksum()’u çağırır ve hesaplanan sağlama toplamı orijinal sağlama toplamıyla eşleşmiyorsa bir InternalError atar.
Tüm kodlamalar yapıldıktan sonra korumamızı test edebiliriz. Bu kitap için sağlanan Sohbet dosyaları, doğru sağlama toplamıyla gönderilir. Distrib/bin dizininden chat_protected.bat kullanarak Chat’i çalıştırabilmelisiniz.
Makinenizde ana Sohbet penceresini açabildiğinizi doğrulayın. Şimdi java.policy’yi distrib/conf dizininde değiştirerek Chat’i hacklediğimizi farz edelim. Bu dosyayı açın, yeni bir satır ekleyin ve kaydedin. Dosya uzunluğunun değiştiğinden emin olun ve chat_protected.bat’ı yeniden çalıştırmayı deneyin. Aşağıdaki istisnayı görmelisiniz.
Dosya uzunluğu değiştiğinden, hesaplanan sağlama toplamı artık orijinal sağlama toplamı ile eşleşmez ve IntegrityProtector bir hata verir.
Chat’in korumalı uygulamasını dağıtacak olsaydık, elbette getChatChecksum.bat dosyasını göndermezdik ve ChatApplication’ın main() yöntemiyle birlikte distrib/bin/chat.bat’ı kaldırırdık.
Bu, Chat’i başlatmanın tek yolunun ProtectedChatApplication sınıfı aracılığıyla olmasını sağlar. Korumalı Chat’in dosyaların yeni sürümüyle çalışmasını etkinleştirmek için, yeni sağlama toplamını almamız ve bunu chat.properties dosyasındaki chat.versionInfo özelliğinin değeri olarak ayarlamamız gerekir.
Birkaç baskın lisans modeli, modern yazılımların dağıtımını yönetir. Dağıtım ve kullanım koşulları genellikle ürünle birlikte gönderilen son kullanıcı lisans sözleşmesinde (EULA) yazılır. Her satıcının lisans koşullarını yazma seçeneği olmasına rağmen, lisans modelleri aşağıdaki üç kategoride gruplandırılabilir.
Kapalı Kaynaklı Ticari Yazılım
Bu, kar amacı gütmeyen yazılımları dağıtmak için kullanılan geleneksel modeldir. Microsoft Windows gibi tescilli ürünleri içerir; ItiliJ IDEA gibi ücretsiz bir değerlendirme için indirilebilen yazılımlar; ve Borland JBuilder ve BEA WebLogic gibi sınırlı işlevli ücretsiz sürüme sahip ürünlerdir.
Geliştiriciler, satın alma kararlarını vermeden önce bir ürün hakkında iyi bir fikir edinmeyi sevdikleri için, sınırlı işlevselliğe sahip ücretsiz bir sürüm sunmak, Java satıcıları arasında giderek daha popüler hale geliyor. Bir ürün iyi yazıldığında, kullanıcılar buna alışır ve sonunda genellikle tam işlevli sürümü satın almaya karar verir.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)