Bluesnarfing, Bluetooth bağlantısını kullanarak telsiz bir aygıttan bilgi çalmanın literatür adı. Şaşırmaya gerek yok bu tür yeni şeylerin literatüre girmesi için fazla bir zaman geçmesine gerek olmuyor. Farklı bir ifadeyle çoğunlukla telefonlar, dizüstü ve el bilgisayarları gibi cihazlardan telsiz bağlantısı kullanılarak bilgi sızdırmada kullanılan, yöntem ve teknikler topluluğuna verilen isim diyebiliriz. Bu yöntemlerle aygıtın ajandasına, kontak listesine ve kayıtlı mesajlarına erişiliyor. Saldırganın aygıtlara bu yöntemle erişilebilmesi için Bluetooth bağlantısının açık ve discoverable (sınırlar içindeki diğer Bluetooth cihazları tarafından bulunabilmesi) özelliğinin aktif olması gerekiyor. Bu özellik kapalı olsa bile saldırganın kaba kuvvetle cihazı tanımlaması mümkün. ise yakındaki Bluetooth cihazlara isim alanında mesaj yer alan reklamlar göndermek olarak tanımlanmış ikinci jargon. Canlı bir bluesnarfing gösterisini izlemek için buyrun. |
XML yada AJAX ile sunucu tarafına güvenli bir şekilde veri göndermek gerektiğinde bazı özel durumları da düşünmek ve kodda ekstra bazı eklemeler yapmak gerekiyor. Kullanmış olanlar bilirler, XMLHTTP nesnesi kullanıldığında, gönderilecek veri open üye fonksiyonuna parametre olarak verilir. Örneğin:
http.open(‘POST’, VERI, true);
veya
http.open(‘GET’, VERI, true);
Yukarıdaki veri değişkeni her iki gönderim metodunda da (GET ve POST) aynı şekilde ve formatta kullanılır. Veri isimli değişkenin formatı şu şekildedir:
degisken1=veri1°isken2=veri2°isken3=veri3
Aslında güvenli aktarımdaki bir sıkıntı da tam burada oluşuyor. Verilerden birinin muhteviyatında &, n veya + (ve özel amaçlı yazdırılamaz karakterler) karekterleri bulunduğunda, veriler sunucu tarafındaki script’te düzgün olarak ayrıştırılamıyor veya aktarılamıyor . Bu sorunun üstesinden gelmek için veri kısmıdaki zararlı karakterklerin ayıklanarak URL’i bozmayacak şekilde kodlanması gerekiyor. Base64, veriyi kendi karakter tablosunu kullanarak (64 adet karakterden oluşur) kodlayan bir algoritma. Web’de base64 encoder ve decoder olarak birçok javascript fonksiyonu bulmanız mümkün. Ancak bunların hepsi PHP’nin (sunucu tarafında php script kullanıldığını varsaydım) fonksiyonuyla uyumlu çalışmıyor. sitesindeki kodlayıcı ve çözücü fonksiyonlar php.net sitesinde de belirtildiği gibi PHP’nin base64 kodlama ve kod çözme fonksiyonlarıyla uyumlu çalışıyor.
Gönderilecek veriyi base64 ile kodlamak ve karşı tarafta çözmek tek başına sağlam bir veri aktarımı yapmak için yeterli değil. Base64 esasında ikili veriyi yazdırılabilir formattaki karakterlere çevirmeye yarıyor. Bu sayede içerisinde veri taşıyıcısını etkileme ihtimali olan zararlı karakterler güvenli bir formata çevrilmiş oluyor. Base64 algoritması içerisinde (A-Za-z0-9+/) karakterlerinin yer aldığı 64 adet karakteri kullanarak kodlanmış çıktıyı oluştururuyor . (Base64 algoritmasının çalışmasını çok güzel bir şekilde açıklayan bir PDF dosyasını indirip okuyabilirsiniz. ~46KB)
Sanırım çıktı karakter kümesinde yer alan + ve / karakterleri dikkatinizi çekmiştir. Bu karakterlerin XMLHTTP
nesnesine verilen veri isimli parametrede yer alması aktarım açısından sorun oluşturmuyor. Benim farkettiğim tek sorun + karakterinin Apache+PHP ikilsinin çalıştığı sunucu tarafında otomatik olarak boşluk karakterine çevrilmesi.Yani + karakterleri boşluk olarak aktarılıyor. + işaretinin yok olması (yani boşluk karakterine çevrilmesi) base64 verisinin orjinalliğini bozduğu için base64_decoder’ın ürettiği çözülmüş veri de bambaşka birşey olarak çıkıyor. Bu nedenle base64 ile kodlanmış veriyi göndermeden önce içerisindeki + karakterini bir javascript fonksiyonu olan ile kodlamak gerekiyor. Bu kodlamadan sonra + karakteri %3B URL koduna çevriliyor. PHP tarafında base64_decode’dan önce encodeURIComponent’in yaptığının tersini yapacak bir kod kullanmaya gerek yok. Nitekim, web sunucu URL karatker kodlarıyla gelen %20, %FB ve %3B gibi verileri otomatik olarak orjinal haline zaten çeviriyor. Yani %3B olan kod +’ya istek PHP ye ulaşmadan çevrilmiş oluyor.
Hazır bol bol karakter kodlamaya dalmışken son bir gerekli kodlamadan ve gerekliliğinden de bahsetmek istiyorum. Latin karakter kümesi dışında bir veri girişi söz konusu olduğunda muhtemelen sunucu tarafında yada veri tabanında karakter kodlama sorunları yaşayacaksınız. Bu sorun esasında verinin sunucu veya istemci tarafında ele alınış şeklindeki farklılıktan kaynaklanır. Verinin sahip olduğu mutlak sayısal değerler farklı kodlama tablolarında farklı karakterler ile yorumlanırlar. Gönderilen veride yer alan karakterler, kullanmakta olduğunuz tabloda yer alıyorsa ve sunucu tarafında da (katar ve veritabanı işlemlerinde) aynı karakter tablosunua göre ele alınıyorsa hiçbir sorun yaşamazsınız. Özet olarak istemci ve sunucu tarafında aynı kodlama standardının kullanılması gereklidir. Burada tüm karakter kodlama tablolarını içeren ve destekleyen UTF kodlamasının kullanılması gerekiyor. UTF 2 byte’lık unicode adı verilen karakterleden oluşur. Latin alfabesi dışında arapça, çince veya japonca gibi dillerde kullanılan karakterleri de kapsar ve destekler. Verimizi XMLHTTP nesnesi ile göndermeden önce, UTF olarak kodlamamızda, verinin selameti açısından büyük fayda var.
Buraya kadar anlattıklarımı özetleyen kod parçası aslında şöyle:
function encode(input) {
input = WebToolKit.utf8.encode(input);
input = WebToolKit.base64.encode(input);
return encodeURIComponent(input);
}
Dilerseniz kodun tamamını indirebilirsiniz. ~4KB
Yazan: Tankado
ajax veri gönderme (12), ajax post data (12), ajax veri post (4), base64_encode turkce karakter (1), güvenli veri aktarımı (1), http open post (1), javascript base64 encode (1), javascript base64 encode türkçe karakter (1), javascript base64 to utf turkish (1), javascript base64 turkish (1), veri aktarım nesnesini(dto) (1), javascript başka sayfaya veri gönderme (1), javascript post input utf8 base64 (1), javascriptten php ye veri aktarma (1), php base64 encode karakter (1)
Turkish
English
Chinese

