Android Php Veri Trafiğini Şifreleme

Android Php Veri Trafiğini Şifreleme

Merhaba arkadaşlar,
Bugün yazmış olduğum bir kodu sizlere sunacağım Öncelikle bu kod ne işe yarar ve mantığı nedir ? Bir göz atalım.

Android de WebAPI yapılan post , get veya request işlemleri bizler için güvensizdir.
Örneğin WebAPI’nizde Urunnekle.php adlı bir API dosyası bulunsun ve parametre olarak

  • Ürün Adı
  • Fiyatı
  • Stok Miktarı

Alınsın. Saldırganlar sizin yazmış olduğunuz bu apiye sınırsız veride ürün ekleyebilir veya silme işleminde de aynı şekilde parametreler (ID veya Ürün adı) girildiğinde sizin ürünler tablonuzu sıfırlayabilirler.

Bunların önüne geçmek için bir takım önlemler almanız gerekir. SSL Bu önlemlerden sadece birtanesidir. Bizise Trafiği şifrelemek ve Token sistemi ile Veri göndermek için birşeyler yazalım (SSL ile aynı mantık).

Yapmış olduğum algoritma şu şekilde çalışmaktadır. Gönderilen post’u şifreleyerek kişinin bu post’u çözümlemesini engellemek. Bildiğiniz üzere WireShark gibi programlar ile ağ trafiği izlenebilir ve gönderilen parametreleri değeri ile birlikte görünebilir. Trafiği şifrelediğimiz taktirde saldırganın sizin gönderdiğiniz parametreleri okumasının önüne geçilir. Kullanılan algoritma tipi AES Algoritması olanarak bilinir.

Yapı şu şekilde çalışmaktadır. Android içerisinde bir adet IV KEY ve bir adet Secret Key bulunmaktadır.

SecretKey ve IV Key ile gönderilen data şifrelenir veya çözünür. Birde gönderilen data içerisine PostCounter ve UserID adında iki değişken eklenir gönderilir. Öncelikle Bir data gönderilecek ise data içerisine PostCounter ve Gönderen kişinin UserID eklenir ve  JSON Formatına çevrilir daha sonra JSON formatındaki veri şifrelenir ve sunucuya post edilir. Sunucu tarafında gelen verinin içerisindeki UserID ye ulaşılır UserID’lere ait Keylerin olduğu yerden keyler çekilir (Veritabanı,Session,Cookie şeklinde saklayabilirsiniz. Ben Veritabanını tercih ettim) . Keyler ile şifrelenen veri çözümlenir. Şifelenen verinin içerisindeki PostCounter değişkeni yani Kişinin yapmış olduğu bir sonraki post sırası doğru ise Işleme devam edilir aksi taktirde keyler’i kırıp yeni bir key sunmalısınız..

Yapmış olduğumuz yapıda saldırgan şayet sizin IV_KEY ve Secret_KEY ele geçirse bile. Bir sonraki post sırasını bilmek zorundadır ! PostSırası şifrelenmiş data içerisinde gömülü olsa bile sizin müşteriniz bir post yaptığı anda post sayısı değişeceği için sizin APIlerinizi kullanamayacaktır.

Ek olarak Post Sınırı koyabilirsiniz veya Süreli bir Key koyabilirsiniz Örneğin 1 saatlik kullanılabilecek keyler. Örneğin 200 Postta bir Keyi ve Post Sırasını sıfırlamak gibi.

Github Link (Php): https://github.com/MhmdAlmz/SecurePhpRestAPI

Github Link (Android): https://github.com/MhmdAlmz/SecureAndroidRestAPI

admin

Bir Cevap Yazın