Arka fon:
Bir REST web hizmeti için kimlik doğrulama düzeni tasarlıyorum. Bu "gerçekten" güvenli olmak zorunda değildir (daha kişisel bir projedir) ama bunu bir egzersiz / öğrenme deneyimi kadar olabildiğince güvenli hale getirmek istiyorum. SSL'yi kullanmak istemiyorum çünkü güçlük ve çoğunlukla kurulum masrafını istemiyorum.
Bu SO soruları beni başlatmak için özellikle yararlıydı:
- RESTful Kimlik Doğrulaması
- REST API / web hizmetini güvenceye almak için En İyi Uygulamalar
- En iyi SOAP / REST / RPC web API'lerine örnekler? Ve neden onları seviyorsun? Peki sorun ne?
Amazon S3'ün kimlik doğrulamasının basitleştirilmiş bir sürümünü kullanmayı düşünüyorum ( OAuth'u seviyorum, ancak ihtiyaçlarım için çok karmaşık görünüyor). Tekrar saldırılarını önlemek için, sunucu tarafından sağlanan rasgele oluşturulmuş bir nonce ekliyorum .
Soruya ulaşmak için:
Hem S3 hem de OAuth, birkaç seçilen üstbilgiyle birlikte istek URL'sini imzalamaya dayanır. Her ikisi de POST veya PUT istekleri için istek gövdesini imzalamaz . Bu, URL'yi ve başlıkları tutan ve istek gövdesini saldırganın istediği verilerle değiştiren ortadaki adam saldırısına karşı savunmasız değil mi?
İmzalı dizeye istek gövdesinin bir karma değerini ekleyerek buna karşı koruyabileceğim gibi görünüyor. Bu güvenli mi?