Projem web, android, ios, windows phone olmak üzere 4 farklı platformda olacak. Ben bu 4 platformunda ortak kullanacağı bir rest api yapmaya karar verdim. Api'nin güvenliğini sağlamak için belirleyeceğim bir keyi her istekte göndermek ve api de key kontrolü yaparak güvenliği sağlayabilir miyim? Güvenliği sağlamanın doğru yolu nedir ?

Api'yi dışarı açmayacağım sadece kendi uygulamalarımız kullanacak(web,android, ios,windows,phone).

Api'yi dışarıya açmak istersem kendi uygulamalarımızın kullandığı api'yi kullanıp onu her iki tarafada uyarlamak mı, yoksa dışarıya açtığımız apiyi ve kendi kullandığımız apiyi tamamen farklı yapmak mı daha sağlıklı olur ?

soruldu: 23 Haz '14, 07:46

alexander's gravatar image

alexander
185172023
cevap kabul oranı: 33%

merakımdan soruyorum, web-client tarafı teknolojisi nedir, angular mi?

(23 Haz '14, 08:57) gturedi gturedi's gravatar image

hayır jquery dışına çıkmayı düşünmüyoruz.

(23 Haz '14, 09:19) alexander alexander's gravatar image

Rest api tasarımı gereği göndereceğiniz requestte bütün gerekli parametreleri içeriyor olması gerekliliğini içerir.. Yani gönderdiğiniz request için herhangi bir login, vs.. gibi işlem yapmıyor olmalısınız. Ben mevcut rest apilerimde aşağıdaki adımları uyguluyorum, eksiğim veya yanlışım varsa benim de çok net bilmediğim bu konuda sitedeki diğer hocalarımız aydınlatabilirse çok sevinirim :)

  1. Kullanıcı login olduktan sonra o kullanıcı için bir "session token" oluşturuyorum
  2. Uygulama yapısı müsait ise rest token'ın zamanaşımına uğrayabilir olmasını sağlarım.. oluşturulan tokenlar sunucu tarafında saklanıp, yapılan sorgularda token zaman aşımına uğramış ise hata kodu gönderirim, uygulama da gerekirse tekrardan token alıp yine sorgulama yapar..
  3. Gelen cevap içeriğini hem kullanıcı hem de sunucu tarafında önceden ayarlanmış bir "secret key" ile encrypt ederim. Encrypt ettiğiniz cevaplara tarih-saat veya üretilmiş bir uuid gibi değerler de eklerseniz (ör. bir json modelinde, 'salt' isimli bir parametre oluşturup onun içine ekleyebilirsiniz) güvenliğini arttırırsınız..
  4. session token'a ek olarak sorgu headerlarına "api key" ekliyorum...

Daha profesyonel güvenlik modellerine sahip rest servisleri incelemek isterseniz "amazon s3" veya oauth gibi yapıları incelemenizi tavsiye ederim..

permanent link

cevaplandı: 23 Haz '14, 13:09

dreampowder's gravatar image

dreampowder
3.3k112849
cevap kabul oranı: 23%

Teşekkür ederim. A slında session oluşturma mantığının normal browserdan girip login olduğunda oluşturulan sessiondan bir farkı yoktur değil mi? api key ile istek gönderenin api'yi kullanmaya yetkisi var mı onu kontrol ediyoruz değil mi?

(23 Haz '14, 15:14) alexander alexander's gravatar image

session kabaca şu şekilde, cihazdan kullanıcı adı ve parola gönderiyorsunuz, sunucu da cevap olarak bilgiler doğru ise bir key gönderiyor. bu key sunucuda saklanıyor ve her sorguda bu key de gönderildiğinden her sorguya cevap vermeden önce key zamanaşımına uğramış mı kontrol edebliiyoruz

(23 Haz '14, 19:12) dreampowder dreampowder's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×28
×15
×2

Soruldu: 23 Haz '14, 07:46

Görüntüleme: 1,341 kez

Son güncelleme: 23 Haz '14, 19:12

powered by BitNami OSQA