Flutter cihaz kimliği ile girişi kalıcı yapmak

sackcode

Hectopat
Katılım
14 Ocak 2021
Mesajlar
51
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar selam, bir mobil uygulama geliştiriyorum (Flutter + Express). Kullanıcının giriş yapmasını istemiyorum; uygulama, cihazın kimliği ile otomatik olarak kayıt olsun ve login şifre veya kullanıcı adı vs gerektirmesin. kullanıcı kendi oturumunu kaybetmesin, yani uygulamayı silip tekrar yüklediğinde bile aynı kullanıcı hesabına erişebilsin şifre vs girmeden. Uygulamada kredi sistemi (ör. elmas satın alma) gibi değerli işlemler de olacak bu yüzden kullanıcının oturumunu kaybetmesi konusunda endişeliyim.

Aklıma takılan birkaç soru var:

Cihaz kimlikleri uygulama silinip tekrar yüklendiğinde veya herhangi bir durumdan ötürü değişebilir mi?
Bu yaklaşımın güvenlik riskleri nelerdir (ör. başkası cihaz ID’yi ele geçirip hesabı kullanabilir mi)?
Silinip yeniden yüklemelerde oturumu kaybetmemek için hangi yöntemler önerilir?

@RaSGooL Hocam, zamanınız varsa tecrübelerinizden yararlanmak isterim
 
İlk düşününce yöntem mantıklı geldi fakat cihaz ID'nin ele geçirilip başka bir cihazda hatta sanal bir cihazda bile taklit edilmesi çok muhtemel. Cihaz ID uygulama silinip yeniden yüklense de değişmeyecektir. Bu yüzden onu kullanmak mantıklı ama değerli işlemlerin olması ve cihaz ID'nin erişilebilir olması sıkıntılı.

Belki cihaz ID'yi Raw olarak değil de AES-256 gibi şifreleme yöntemleri ile şifreleyerek kullanabilirsin ama bu sefer de Client tarafına şifreyi statik olarak gömmen gerekir. Bu da tersine mühendislikle rahatlıkla çıkarılabilecek bir şey. Şayet statik gömmeyeyim her cihaza Server'dan dağıtayım dersen de bu sefer işin içine Key Distribution yöntemleri ve RSA-3072/4096 gibi asimetrik şifreleme yöntemleri girecek. Bunlar tabi ki sunucu tarafına hep yük. Hashleme olayı zaten hiçbir işe yaramaz senin senaryonda. Çünkü ID'yi çalan şahısın da ilk deneyeceği şey en çok kullanılan Hash yöntemleri olur.

Yani yapılacak işe göre uğraşmaya değebilir de değmeyebilir de. Genel yöntem olarak sorumluluğu kullanıcıya yıkmak için username & password tercih edilmesinin en büyük sebeplerinden biri bu.
 
Authenticate bir tarafa authorization yontemi bile olmaz device id kullanarak. Icinden gecerler 2 dakikada.

Basarili giris sonrasinda deviceid iceren JWT gibi tampersafe bir yapi kullanabilirsin, boylece "hatirlarsin" ama kullanici device id yi istedigi gibi degistirebilir.
 
Tabiki sadece devideId ile auth işlemi olmamalı. Ama yaptığın uygulamaya göre bu kural esneklik gösterebilir.
Eğer uygulamanda kritik durumlar yoksa bırak deviceId ile user oluştur. Taki adam elmas satın almak falan istiyor o zaman authentication işlemini zorunlu kıl. Bu authenticate işleminide platformlara özel ayrı yaptırabilirsin. Android tarafına Google ile devam et, iOS tarafında Apple ile devam et eklenebilir. Bu sayede satın alım gibi işlemlerde authenticate zorunlu olur. Bunun dışında zorunlu olmaz. Ha kullanıcı isterse satın alma dışında bile login olabilsin.

Cihaz kimlikleri uygulama silinip tekrar yüklendiğinde veya herhangi bir durumdan ötürü değişebilir mi?
Root ve jailbreak yapılırsa değiştirilebilir. Android tarafında büyük ihtimalle bunu yapan uygulamalar vardır. iOS tarafı daha stabildir.

Bu yaklaşımın güvenlik riskleri nelerdir
Sanıldığı kadar kötü bir senaryo olmaz. Tabi dediğim gibi uygulamanın içeriğine bağlı bu.

Silinip yeniden yüklemelerde oturumu kaybetmemek için hangi yöntemler önerilir?
DeviceId işini görür. Yada username password falan isteme. Direkt Google, Apple ile giriş yaptır geç. Ama dediğim gibi bence burasını esnek yapabilirsin.
 
Tabiki sadece devideId ile auth işlemi olmamalı. Ama yaptığın uygulamaya göre bu kural esneklik gösterebilir.
Eğer uygulamanda kritik durumlar yoksa bırak deviceId ile user oluştur. Taki adam elmas satın almak falan istiyor o zaman authentication işlemini zorunlu kıl. Bu authenticate işleminide platformlara özel ayrı yaptırabilirsin. Android tarafına Google ile devam et, iOS tarafında Apple ile devam et eklenebilir. Bu sayede satın alım gibi işlemlerde authenticate zorunlu olur. Bunun dışında zorunlu olmaz. Ha kullanıcı isterse satın alma dışında bile login olabilsin.


Root ve jailbreak yapılırsa değiştirilebilir. Android tarafında büyük ihtimalle bunu yapan uygulamalar vardır. iOS tarafı daha stabildir.


Sanıldığı kadar kötü bir senaryo olmaz. Tabi dediğim gibi uygulamanın içeriğine bağlı bu.


DeviceId işini görür. Yada username password falan isteme. Direkt Google, Apple ile giriş yaptır geç. Ama dediğim gibi bence burasını esnek yapabilirsin.

D8 deviceid li kullaniciyi kaydetti diyelim.
Elmas satin alirken de auth isini google a delegate etti ve 1000 elmas aldi.

Benim farkli cihazdan device id hackleyerek ya da client kodu modifiye ederek D8 ile gelip hesabimda 1000 elmas olsugunu gormemi engelleyen mekanizma nedir?

Guvenli islemden hemen once auth yapilmasi yetmez, kullaniciyi guvensiz yontemle "taniyorsa" zaafiyeti yaratti bir defa.
 
Benim farkli cihazdan device id hackleyerek ya da client kodu modifiye ederek D8 ile gelip hesabimda 1000 elmas olsugunu gormemi engelleyen mekanizma nedir?
Buradaki esneklik payını iyi ayarlamak lazım hocam. Adam eğer google credentials ile gelmiş ise artık deviceId ile giriş olmamalı. Uygulama silindiğini varsayalım yada deviceId kopyalandığını varsayalım o halde sunucu zaten bu deviceId verisini bir google ile match etmişti. O zaman direkt google credentials zorunlu kılacak.
 

Technopat Haberler

Yeni konular

Geri
Yukarı