Soru & Cevap

Güvenli Web Service Bağlantısı Nasıl Kurulmalı ? ...

24.01.2016 - 04:35

Herkese merhaba, sorum kabaca şu şekilde ; androidden web servisini güvenli kılmanın yolu nedir? decompiile edip web servis linkini bulsalar dahi web servisi kullanmalarını istemiyorum bunun önüne nasıl geçilir?

Biraz daha detaylı anlatacak olursam, bir web servisim(.net) ve bir android uygulamam var. Android uygulamasının web servisi kullanmasını istiyorum fakat android uygulamaları decompile edilince tüm bilgiler çıkıyor (string değişkenler kodlar vs). Bu işlem yapılıp web servis linkim bulunur ise web servisi kendi programlarında veya dışarıdan bi şekilde kullanabilirler.Yani benim derdim web servisi güvenli kılmak, benim uygulamamın dışında kullanılamaması.

Aklıma gelen yöntemler ve bunları eleme nedenlerim de şu şekilde;

1.Verileri şifreli gönderip serverda çözmeye kalksak android decompile edilince şifreleme algoritması da ortaya çıkacak, kişi kendi istediklerini aynı algoirtmayla şifreleyip gönderebilir.

2. Web servisten token istemek, belli süreli token alıp işlem yapmak da mümkün fakat bu sefer de kişi kendisi bir token alır tokena verdiğim limitler kadar kullanır ama yine kullanabilir olmuş oluyor ben hiç kullanmasını istemiyorum benim uygulamam dışında.

3. Androidden sabit bir kod gönderip web serviste kontrol etmek, bu sabit kodu decompile edilince ortaya çıkmayacak bir şekilde saklamak gerekiyor bunun da yöntemini bulabilmiş değilim. En son uygulamanın imzasını sha1 veya md5 şeklinde runtime'da çekip servise göndermeyi kararlaştırmıştım ancak apk dosyalarının imza verilerine de erişilebiliyormuş, bu da gizli bir kod olmaktan çıktığı için kişi servise bunu bulup göndererek işlem yapabilir.

Sorunumu çözebilecek şeyler;

Şöyle bir yazı buldum : http://android-developers.blogspot.in/2013/01/verifying-back-end-calls-from-android.html

Google apileri kullanılarak web servis gelen çağrının benim uygulamamdan mı geliyor yoksa harici bir gönderici mi, bunun kontrolünü yapabiliyor. Yani benim anladığım bu.Fakat bunu nasıl kullanacağımı çözebilmiş değilim. Bu konuda türkçe kaynak veya örnek bir yapım videosu bulamadım. Bir ipucu buldum fakat devamını getiremiyorum. Bu sorunu çözebilecek farklı önerileri veya son belirttiğim durumla ilgili bilgisi olanların cevaplarını bekliyorum.

Teşekkürler

77 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-30491-1565085904.jpg
serhatleventyavas
28.01.2016 - 01:08

Bence bunu kesin çözümü google abimizin çalışmaları kesin çözüme ulaştırabilir onun dışında kesin bir çözüm bulmak zor sanırım

Profile picture for user berkcalik
berkcalik
27.01.2016 - 10:27

Merhaba, Ulaş beyin cevabı için: webapi2 kullanımında benim sorunuma çözüm olan noktayı bulabilmiş değilim. Değişen ne oluyor da bahsettiğim sorunlar ortadan kalkıyor? Bankalar bunu kullanıyor olabilir mühim olan bunu nasıl kullandıkları nasıl algoirtmalarla yönettikleri. 

Serhat bey için ise decompile işleminde string dosyasında özellikle web servis linki kontrol etmedim ancak tanımlamanan string değerleri görebildim, muhtemelen link de geliyordur...

 

Aynı sorunu yaşayıp buna denk gelebilecek arkadaşlar için ise bulduğum çözümü yazayım, proguard diye bir şey var imiş, kodlarınız apk exportu yaptığınızda okunması zor hale getiriyor. Ufak bir test yaptım ve "final public static string" tipindeki değişkenimin içeriğini decompile işleminde bulamadım. Yani bu tipteki değişkenleri gizlediği ortada. Bununla beraber string, public string, public static string değişkenleriyle denemeler yaptım. Bunların içeriği decompile edildiğinde farklı değişken isimleriyle yine ortaya çıkıyor. Çözüm web servis linkini "public static final string" tipinde tanımlayıp projenin export işlemini proguard ile yapmak.

 

Farklı çözümlere ve önerile tekrar açığım soruyu takip etmeye devam ediyorum, yorumlarınız için teşekkürler.

picture-30491-1565085904.jpg
serhatleventyavas
27.01.2016 - 03:11

site url sini strings.xml dosyasında saklarsan biraz daha güvenli olabiliyormus. Java kodları tamamen cözülse bile xml tarafında herşey tam olarak çözülmüyormus. Tabi ne kadar dogru bilmiyorum. Hiçbir uygulamayı decompile etmedim :)