Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • YardımPHP
  • Api güvenliğini nasıl sağlayabilirim?

Merhaba arkadaşlar. Ben react native ile bir mobil uygulama yapıyorum. Veritabanında ekleme, listeleme işlemlerini php veya laravel ile yapacağım. Api ile bu verileri mobil uygulamamda göstereceğim. Benim kafamın takıldığı nokta ise şu:
Örneğin bir saldırgan benim mobil uygulamamı indirip uygulamanın hangi web servisine istek gönderdiğini görebiliyor. Yani uygulama içinde kullanıcı kaydı yapılacak x.com/api/register adresine bir istek gönderildiğini bulabiliyor. Şimdi saldırgan uygulamanın trafiğini izleyebildiği için hangi parametleri gönderdiğimide bilebilir ve kendiside bir uygulama yazarak veya herhangi bir şekilde otomatik olarak yüzlerce hatta binlerce hesap açarak uygulamama saldırı düzenleyebilir. Tabi bunu sadece veri ekleme olarak düşünmeyin. Örneğin bir kullanıcının bilgileri çekmek için web servise kullanıcının id'sini gönderdiğimi ve karşılığında web servisten kullanıcının bilgileri çektiğimide düşünün. Saldırgan rastgele id'ler göndererek bütün kullanıcıların bilgilerine sahip olabilir. Benim istediğim benim mobil uygulamam dışında hiçbir şekilde başkası web servisime erişemesin. Bunun mantığı nedir? Bunu engelleyebilir miyim ?

@mgsmus hocam sizin bu konuda bir bilginiz var mıdır acaba?

  • mgsmus bunu yanıtladı.
  • koddanadam Endpoint'ler token ile korunur, sadece üye girişi yapmış olanlar erişir. Token ile korunsun ya da korunmasın, tüm endpoint'ler ayrıca rate limiter ile korunur, böylece 1 dk içinde atılabilecek istek sayısı sınırlandırılır. Laravel'de middleware('throttle:60,1') şeklinde throttle middleware mevcut. 60,1 1 dakikada maksimum 60 istek demek. DDoS için ise uygulamanızda yapabileceğiniz bir şey yok, bunun için CloudFlare, AWS Shield gibi servisler kullanmanız lazım.

    koddanadam Engelleyebileceğinizi sanmıyorum, sonuçta token ile korunan public bir API. Yalnız öyle bir yazmışsınız ki sanki token ile endpointleri korumuyor gibisiniz.

      mgsmus Hocam şu anda web servisi yazmadım. Sadece güvenlik olayı kafama takılmıştı. Bir süredir nasıl koruma sağlayabileceğimi düşünüyorum. Token karşıma çok çıktı ama yine de aşılabilir bir yöntem olduğunu düşünüyorum. Araştırmaya devam edeceğim ama bana özellikle şunuda araştır diyeceğiniz bir şey varsa çok sevinirim hocam. Yine kafama takılan bir şey olursa buradan yazarım. Cevabınız içinde teşekkür ederim hocam.

        koddanadam Endpoint'ler token ile korunur, sadece üye girişi yapmış olanlar erişir. Token ile korunsun ya da korunmasın, tüm endpoint'ler ayrıca rate limiter ile korunur, böylece 1 dk içinde atılabilecek istek sayısı sınırlandırılır. Laravel'de middleware('throttle:60,1') şeklinde throttle middleware mevcut. 60,1 1 dakikada maksimum 60 istek demek. DDoS için ise uygulamanızda yapabileceğiniz bir şey yok, bunun için CloudFlare, AWS Shield gibi servisler kullanmanız lazım.

          @mgsmus Tekrardan merhaba hocam. Ben kullanıcı giriş yaptıktan sonra giriş bilgilerini uygulama üzerinde değilde web servis üzerinde tutmayı düşünüyorum. Yani kullanıcı giriş yapınca php ile yaptığım üyelik sisteminde bir session oluşturacak ve bu session içinde giriş yapıldığına dair ve kullanıcının id bilgisini tutacağım. Kullanıcı bir post paylaşmak istediğinde kullanıcının id'sini uygulamadan değilde giriş yaparken session'a atanan id değerinden alacağım. Uygulamaya sadece giriş yapıldığına dair bilgi gidecek. Sizce bu güvenli bir yöntem olur mu hocam? Umarım iyi bir şekilde anlatabilmişimdir.

            koddanadam Laravel Sanctum kurup mobil uygulama için token veren bir login endpointi yazacaksınız. Mobil uygulamadan giriş isteği karşılığında size token verecek, sonra auth ile korunan rotalara bu token ile mobil uygulamadan istek atabilirsiniz. Yazdığınız şey mantıklı değil, zaten olmaz da.