2010-08-04 37 views
7

Flash (AS3) uygulamasında Facebook ile sıkı bir şekilde bütünleştirilmiş bir sosyal medya uygulaması yapıyorum - tüm kullanıcı hesapları Facebook bağlantısıyla işleniyor ve tüm Facebook bağlantıları işleniyor Javascript ve AS3 Facebook API'lerinin bir kombinasyonu yoluyla. Sunucu tarafı veri yönetimi için arka uçta Codeigniter kullanıyorum. Bu, Flash'ın URLRequest'leri aracılığıyla sitede kullanıcı eylemlerini ve verilerini izleme özelliğini içerir.Facebook Kimlik Doğrulamasını Zorunluyor: İstemci tarafı ve sunucu tarafı

Sorunum, Flash'tan yapılan sunucu isteklerinin sahteciliğini nasıl önleyeceğimi bilmem; Teoride, kötü niyetli kullanıcılar Flash'ın sunucuma yaptığı çağrıları izleyebilir ve bunları (örneğin) çöp verisi ekleyip veritabanımdaki belirli bir Facebook kullanıcı kimliğiyle ilişkilendirecek şekilde çoğaltabilirler. İstemci tarafında (Facebook JS API aracılığıyla) sunucu tarafından hiçbir müdahalede bulunulmadan tüm kimlik doğrulaması yapılmaktadır. Bu nedenle, Flash ve sunucu arasındaki çağrıları kullanıcıların güvenliğini sağlamak için tam olarak nasıl güvenli hale getirileceğini anlamakta zorlanıyorum bunları yapmak için Facebook ile doğrulanması gerekiyor.

Göz önünde bulundurduğum bir olasılık, istemci ve sunucu tarafından Facebook UID'lerini ileri ve geri iletmek için bilinen bir şifreleme şeması kullanmaktır; Bununla birlikte, her şeyi batırmak için şemayı kırmak (veya swf'yi derlemek) için yeterli zamana/sabra sahip sadece bir girişimci hacker alacaktı. Her neyse, bunun üzerinde düşünebiliyorum, ama önemli bir nokta gibi görünüyor ve en iyi yaklaşımdan emin değilim. Herhangi bir geri bildirim çok takdir edilecektir!

cevap

1

Bu yasal bir sorundur, çünkü CWE-603: Use of Client-Side Authentication numaralı telefonu ihlal ediyorsunuz. Şifreleme, bu istasyona yardımcı olamaz çünkü kötü niyetli bir istemci herhangi bir sırrı elde edebilir.

İstemci doğrulamak için en iyi yaklaşım, flash uygulamasının sunucuya information about the session gönderilmesini sağlamaktır. Sunucunun daha sonra facebook'a, facebook ile geçerli bir oturuma sahip olduğunu doğrulayabilmesi için php api gibi bir şey kullanarak tekrar facebook'a bağlanması gerekir. Bu, giriş başına bir kez yapılmalı ve ardından o kullanıcı için veri mağazanıza erişmek üzere flash uygulamasına bir oturum kimliği (çerez) verebilirsiniz.

+0

Rook, erişim belirtecini istemcinin kullanabileceği oturum hakkında bilgi olarak mı kullanıyorsunuz ve sunucu tarafından FB'ye bağlanmak için kullanılabilir mi? – Totach

+0

Sadece bilmenizi sağlamak için, wiki.developers.facebook bağlantınız kesildi. Referans: meta.stackoverflow.com/q/101241/149820 – staticbeast

+0

Bu yanlış. Bunu gerçekleştirmenin bir yolu olsa da, istemci (javascript) lib'leri tarafından ayarlanan tanımlama bilgisini kullanmak daha verimlidir. – MetaChrome

6

Sadece bunu anlamaya çalışırken bir ton harcadım! Bunun eski bir soru olduğunu biliyorum, ama umarım hala ya da en azından bir başkası için yararlı olacaktır.

Temel sorun, aynen söylediğin gibi. İstemci tarafı kimlik doğrulaması yapıyorsanız, ancak bazı kullanıcılara özgü sunucu tarafı işlemleri yapmak istiyorsanız, sisteminizde de kullanıcının kimliğini doğrulamanız gerekir. İdeal olarak, bir parola ile tekrar oturum açmalarını önlemek istersiniz, çünkü bu korkunç bir kullanıcı deneyimi olur. Dolayısıyla, UID'yi göndermek ve bunları bu şekilde kaydetmek için cazip gelebilir. Ne yazık ki, bunun için belirgin bir güvenlik riski var. Siz de belirttiğiniz gibi, herkes genel bilgi olan UID'yi geçebilir ve olmayan biri olarak oturum açabilir.

Bu sorunun çözümü, bir kullanıcı başarıyla oturum açtıktan sonra facebook api'nin düştüğü bir çerezde saklanan bilgileri kullanmaktır. Çerezdeki bilgiler, içindeki kullanıcı bilgilerini ve benzersiz bir imza verilerini içerir. Sunucu çerezin içeriğini alırsa ve doğru bir şekilde işliyorsanız, bir gizli kod çıkarmalıdır. Bu gizli kod, tam olarak, sadece sizin ve facebookun bildiği uygulama gizli kodunuzla eşleşmelidir. Eğer öyleyse, o zaman kurabiyenin (ve dolayısıyla kullanıcının) yasal olduğunu biliyorsunuzdur. Eğer aynı değilse, o zaman birinin komik bir şey denediğini biliyorsunuzdur.

fazla bilgi için, bu sayfaları kontrol düşünebilirsiniz: PHP - https://developers.facebook.com/docs/guides/web/#personalization Yakut - http://vombat.tumblr.com/post/835536630/ruby-version-of-facebooks-get-facebook-cookie-in-php

Ben de LinkedIn ve Twitter her ikisi için benzer yaklaşımlar var olduğunu unutmamalıdır.

İlgili konular