Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
672 kez görüntülendi
ios development kategorisinde tarafından

Merhaba,

Uygulamamda xml web servislerini kullanıyorum. Kullanıcı adı ve şifreyi parametre olarak geçiriyorum, her ne kadar hash mekanizmasını kullansam da network dinlemesi yada farklı yöntemlerle kullanıcı adı şifre bir şekilde öğrenilebiliyor ve servise erişim sağlanabiliyor.

Bu işin doğrusu nedir acaba, xml web servisleri user authentication u sağlanırken kullanıcı adı şifre ne şekilde doğrulanmalı?

1 cevap

0 oy
tarafından

Man in the middle attaklarına karşı transfer edilen veriyi encrypt etmek bu işin doğru yolu.
Bunun için de SSL kullanmak gerekiyor tabiki.

JSON kullanıyor olsaydın SSL'e gerek kalmadan JSON WEBTOKEN kullanmanı önerirdim.
Ama istersen kendin de aynı şekilde server ve client tarafında paylaşılan bir key'le veriyi hash'leyebilirsin.
Hatta zaman damgası kullanarak two factor authentication benzeri bir hash mekanizması bile kurulabilir daha da ileri gidip.

tarafından

Merhaba Yasin Bey,

Sormuş olduğum bu soru hakkında kafam biraz daha karıştı. Ben servisimi ssl aldım, kullanıcı adı ve şifremi de hash algoritması ile hashledim. Uygulama altından kullanıcıların gönderdiği ya da okuduğu veriler ssl ile şifrelenir vaziyete geliyor ancak benim servise erişim için kod altına yazdığım kullanıcı adı ve şifre yinede okunabilir bir durumda mıdır?

Yani uygulamanın kırılması, kodun açılması vb ile servis adres, kullanıcı adı ve şifre okunabilir durumda değil midir? Eğer öyle ise kod altındaki servis adresi ve erişim bilgilerimi nasıl koruyabilirim?

tarafından
+1

öncelikle shared key ile hashing algoritmasını kullanarak veriyi şifrelemenin ssl'e göre biraz daha az güvenilir olduğu gerçeğini unutmayalım.

her nekadar ios'da android benzeri bir şekilde de kodların reverse engineering'le decompile edilebilmesi pek mümkün değilse de, jailbreak cihazlarda bir şeyler yapılabiliyor. ama hash için kullandığın secret key'i infoplist'de tutmadan kod içerisine gömdüysen, elde etmek baya uğraştırır ama yine de imkansız değil.

tarafından

Hızlı yanıtınız ve yardımlarınız için çok teşekkğrler yasin bey. Henüz uygulamamı yayınlamadığım için sizin yönerge ce önerilerinize göre modifeye edebilirim.

Anladıpım kadarıyla %100 bir güvenlik söz konusu olmuyor hiçbir zaman. Ama mutlaka bir yöntemi de olmalı, yani xml Web servisimin adresini koda ya da pliste eklemeliyim, veri güvenliği arttırmak için de ssl kullanmalıyım o da tamam, ama servis authentication u yaparak servis adresini ve kullanıcı adı şifreyi koruyacak bir yöntem yok sanırım, sonuçta adres ve kullanıcı adı şifre ssl ğzerinde bir durum.

tarafından
+1

Xml Web servisinin adresini ne yapsan da gizleyemezsin zaten.
Araya bir proxy'ile girilerek bu adres bir şekilde elde edilebilir.

Esas mühim mevzu, bu servise bağlanabilmek için bir authentication işlemi yapmak ve aradaki veri trafiğini şifrelemektir.

Servisle, uygulama arasındaki veri trafiğini şifrelemenin en sağlam yolu SSL. Bunu bir kenara koyalım.

Authentication işlemi için de tabiki en güvenilir ve klasik yol kullanıcının kendi girdiği bir kullanıcı adı ve şifre olacaktır.

Aslında tam olarak nasıl bir yapı kurdun anlamadım.
Kullanıcı servise bağlanmak için ad ve şifreyi kendisi girmiyor mu?

Login bilgilerini kullanıcıya bırakmadan, kendin uygulamanın içerisine gömdüysen bu bilgilerin elde edilme riski tabiki olacaktır.

Eğer amacın, servisle uygulama arasındaki authorization işlemini, kullanıcının kimlik bilgilerini girmesine gerek kalmadan otomatikleştirmekse, bu yukarıda da belirttiğim gibi her zaman için bir risk taşır.

Bu riski azaltmak için bir one way hashing algoritmasıyla, zaman damgası ve login esnasında uygulama ve servis tarafından karşılıklı olarak elde edilebilecek başka verilerle (ip adresi gibi) oluşturulmuş key'lerin kullanılması, uygulama içerisine girdiğin statik login bilgilerinin oturuma özel ve daha güvenli bir hale getirilmesi için kullanılabilir.

Ama bu riski tamamıyla ortadan kaldırmak için two factor authentication gibi biraz daha karışık çözümler tercih edilmelidir.

tarafından

Alında bu cevabınız benim için yeterli ama yapıyı bilmiyorum ve esas mühim mevzu, bu servise bağlanabilmek için bir authentication işlemi yapmak dediğiniz için açıklama ihtiyacı hissettim.

Uygulamamda üyelik sistemi mevcut değil. Kullanıcılar uygulamam üzerinden form dolduruyorlar ya da içeriklere erişiyorlar, örneğin şikayet başvuru yapmak, duyuruları okumak gibi. Üyelik sistemi olmadığı için servis authentication işlemini kod altına yazdığım kullanıcı adı şifre ile sağlamak durumundayım. Üyelik olsa zaten authentication işlemi kullanıcı oturumu ile olacağından sorun kalmayacak.

...