• 17-02-2020, 11:37:20
    #1
    Merhaba,
    Native uygulama dışında, php ile geliştirdiğim ufak çaplı bir webview uygulama yaptım. Tamamen php ile çalışmakta.
    Kullanıcı girişi ile bazı listelemeler göstermekteyim.
    Giren kullanıcının daha sonra tekrar tekrar giriş yapmasını istemiyorum. Normal bir uygulama gbi giriş yapıp, çıkış yapana kadar login olması gerek.
    Bazı session ve cookie ile denemeler yaptım. Android tarafında çalışsada IOS tarafında etkili olmadı.
    Çıkış yapana kadar login olabilecek yöntem sizce nedir? Kişiyi login nasıl tutabilirim?
    Önerilerinize ihtiyacım var.
  • 17-02-2020, 11:45:53
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    1. her kullanıcı için bir token oluştur
    2. kullanıcı login olduğunda url ile tokeni yaz webview da url den parametre ala bilirsin.
    3. aldığın parametreyi uygulama içinde sakla
    4. app içinde artık her açılışta tokeni url'e kele . örneğin : xxx.com/?token=1231231321315
    5. web tarafında tokeni kontrol et doğru ise otomatik giriş yap çerezleri oluştur.
  • 17-02-2020, 11:52:42
    #3
    Teşekkür ederim.
    Bu token bir defaya mahsus oluşturulacağı için ve her kullanıcıda aynı token çek edileceği için güvenlik zafiyeti oluşturabilir mi acaba?



    Php ile telefonun kimliğini almak sorgulamak gibi bir şey yapılabilir mi?
    Yanikullanıcının telefon id'sini alıp veritabanına yazıp daha sonra ki uygulama girişlerinde kontrol etme gibi bir durum olabilir mi?
  • 17-02-2020, 12:07:29
    #4
    webview uygulama geliştirirken arka planda api temelli bir sistem kurmalısınız.
    bu sistemde ise restful standartlarına dikkat ederek geliştirmelisiniz.
    dilden bağımsız bu konuda en iyi api auth standartı ise "JWT token"
    bir sürü kaynak ve kütüphane mevcut eğer arka planda framework kullanıyorsan örnek "laravel jwt auth example" gibi aramalarla örneklere erişebilirsin.

    misal örnek vererek anlatalım.
    cookie: cookie tamamen client üzerinde tutulan key->value temelli bir veri depolama öntemidir.
    local storage: cookie gibi daha yeni bir veri depolama sistemidir veri client tarafındadır.
    session: server tarafında tutulan veri depolama sistemidir.client tarafında bir token ile server tarafında doğrulama yapılır. PHP session start komutu verildiğinde client tarafında default "PHPSESSID" keyword ile bir cookie oluşturur.bu değer ile session doğrulaması yapılır.

    senin yaşadığı nsoruna gelirsek sen server tarafında bir session oluşturuyorsun server client'e phpsession cookie gönderiyor fakat webview uygulama ise bir tarayıcı değildir.
    doğrudan http request isteği oluştururgelen responsu sana döndürür herhangi bir cookie tutmaz.

    JWT token ise server tarafında doğrulama sonucu oluşturacağın bir token'dır.Token içerisinde expiration, public veriler bulunur.3 parçadan oluşan kısımdan birisi ise server tarafında doğrulana bilen şifreli bi alandır.
    yani birisi token üzerinde değişiklik yaparsa server onaylamayacaktır bu sayede güvenliği sağlanır.
    fakat api temelli geliştirmede cookie ve session gibi özellikleri unutmalısınız.zaten api için kullanım doğru değildir.
  • 17-02-2020, 12:22:14
    #5
    CodeS adlı üyeden alıntı: mesajı görüntüle
    webview uygulama geliştirirken arka planda api temelli bir sistem kurmalısınız.
    bu sistemde ise restful standartlarına dikkat ederek geliştirmelisiniz.
    dilden bağımsız bu konuda en iyi api auth standartı ise "JWT token"
    bir sürü kaynak ve kütüphane mevcut eğer arka planda framework kullanıyorsan örnek "laravel jwt auth example" gibi aramalarla örneklere erişebilirsin.

    misal örnek vererek anlatalım.
    cookie: cookie tamamen client üzerinde tutulan key->value temelli bir veri depolama öntemidir.
    local storage: cookie gibi daha yeni bir veri depolama sistemidir veri client tarafındadır.
    session: server tarafında tutulan veri depolama sistemidir.client tarafında bir token ile server tarafında doğrulama yapılır. PHP session start komutu verildiğinde client tarafında default "PHPSESSID" keyword ile bir cookie oluşturur.bu değer ile session doğrulaması yapılır.

    senin yaşadığı nsoruna gelirsek sen server tarafında bir session oluşturuyorsun server client'e phpsession cookie gönderiyor fakat webview uygulama ise bir tarayıcı değildir.
    doğrudan http request isteği oluştururgelen responsu sana döndürür herhangi bir cookie tutmaz.

    JWT token ise server tarafında doğrulama sonucu oluşturacağın bir token'dır.Token içerisinde expiration, public veriler bulunur.3 parçadan oluşan kısımdan birisi ise server tarafında doğrulana bilen şifreli bi alandır.
    yani birisi token üzerinde değişiklik yaparsa server onaylamayacaktır bu sayede güvenliği sağlanır.
    fakat api temelli geliştirmede cookie ve session gibi özellikleri unutmalısınız.zaten api için kullanım doğru değildir.
    Teşekkür ederim.
    Session ile tuttuğum veriler android tarafında kaybolmadığını gördüm. Uygulamayı açıp sonra temizleyince ve bir süre sonra girince tekrar hesaba girdiğini gördüm.
    Fakat bu IOS tarafında gerçekleşmedi. Uygulamaları temizleyince tekrar giriş yap ekranı ile karşılaşıyorum.
    Sanırım temel problem, uygulamaları temizleyince Cookie ve Sesion'ların siliniyor olması.
    Token'ı giriş yaparken oluşturabilirim ama sonrasında bu token'ı hatırlamak için session yada cookie ile almam gerekmeyecek mi? yada veritabanından çekmem gerekecekse, kullanıcıyı neye göre eşleştirip token'ı bulduracağım?
  • 17-02-2020, 14:00:18
    #6
    Abm adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim.
    Session ile tuttuğum veriler android tarafında kaybolmadığını gördüm. Uygulamayı açıp sonra temizleyince ve bir süre sonra girince tekrar hesaba girdiğini gördüm.
    Fakat bu IOS tarafında gerçekleşmedi. Uygulamaları temizleyince tekrar giriş yap ekranı ile karşılaşıyorum.
    Sanırım temel problem, uygulamaları temizleyince Cookie ve Sesion'ların siliniyor olması.
    Token'ı giriş yaparken oluşturabilirim ama sonrasında bu token'ı hatırlamak için session yada cookie ile almam gerekmeyecek mi? yada veritabanından çekmem gerekecekse, kullanıcıyı neye göre eşleştirip token'ı bulduracağım?
    android tarafında basit bi depolama veritabanı ile bu token'ı tutabilirsin.
    token = kullanıcı eşleştirmesi ise şöyle

    jwt token 3 parçadan oluşur
    1. bölüm şifreleme yöntemi
    2. bölüm public alan
    3. bölüm encrypted keyword

    1. ve 3. bölüm zatenjwt yapısında var olan hazır kısımlar backend entegrasyonu yaparken hazır paketleri kullan kullandığın frameworke göre.
    2. bölüm kısmı public bir veridir base 64 ile decode edilebilir yani bu kısıma private veri saklanmamalıdır örneğin kullanıcının şifresi gibi.
    2. bölüm içerisine ise kullanıcı id koy arka tarafta ise ilk önce token doğrulaması yapacaksın eğer token doğru ise token içerisindeki 2. alanı decode edeceksin buradaki kullanıcı id ile bu token hangi kullanıcının öğrenmiş olacaksın.

    aşağıda 2. farklı kaynak paylaştım gayet açıklayıcı
    https://medium.com/@thejengo/api-i%C...i-c29e3826daea
    https://research.securitum.com/jwt-j...oken-security/
  • 17-02-2020, 14:39:32
    #7
    Pekala deneyeceğim bunu teşekkür ederim.