سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > ASP و ASP.NET
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الوسوم:

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو نشيط جدا
#1  
هل استطيع التحقق من دومين من خلال RESTFul

السلام عليكم ورحمة الله و بركاته

لدي بعض الخدمات اقدمها على شكل API للجمهور لمن يريد ان يستخدمها

حيث اني اقدم نموذج طلب لمن
يريد استخدام الخدمات و بعدها يحصل على مفتاح خاص به يستخدمه كالتالي على سبيل المثال
ما اريده رغم اني حاولت كثيراً واتوقع انه لا يمكن عمل مثل هذا الأمر

هو التحقق من الدومين الذي يأتي منه الطلب
حتى يتم التأكد من ان المفتاح المستخدم هو فعلاً لهذا الدومين

حيث لو تم الطلب التالي :

http://xxxxxx.com/v1/?key=xxxxxxxx

اعرف من اي رابط اتى هذا الطلب!!!
لأن المفتاح قد يحصل عليه غير من طلب المفتاح لأنه قد يستخدم الخدمة في
ملفات جافاسكربت و بذلك يسهل على الغير معرفة المفتاح


اتمنى ان الجميع فهم المقصود!!
رغم اني لم اجد المواقع الكبيرة التي تقدم خدمات API سوى تقديم مفتاح فقط
و هذا يجعل من الأمر قد يكون مستحيل التحقق من الدومين !!!
لأن خدمات RESTFul قد يتم استخدامها في كل مكان غير المواقع


^^^

احس انه سؤال غبي لأنه يتعارض مع RESTFul و طريقة عملها
و إن كان صحيح فأحس انه عيب في هذه الطريقة
و إن كان فعلاً لا يوجد حل فماهو الخيار المناسب لعمل هذا الأمر حتى لو تطلب الأمر
لترك RESTFul
أو هل من اقتراحات لتحسين الأمن في عدم استخدام المفتاح غير مالك المفتاح
بإستثناء اسم مستخدم وكلمة مرور فأنا لا اريد استخدامها

في انتظاركم






عبدالله حسن is offline   قديم 11-06-2011, 12:13 AM
الرد مع إقتباس
عضو فعال
#2  

اقترح عليك ان تحدد عدد الطلبات كل يوم
يعني مثلًا المشترك الواحد يستطيع تقصير 1000 رابط في اليوم(خدمة تقصير روابط)

الحالة الوحيدة السهلة للوصول لكود المشترك هي الجافاسكربت
وهنا يجب عليك ان تتيح للمشترك اختيارين:
1)امكانية استخدام الكود من أي host - يعني من أي دومين، أيبي وغيره (wildcard)
2)امكانية استخدام الكود من هوست\ات محدد\ة

إذا كان عنده جافاسكربت وحصلت معه مشاكل، يمكن ان يقفل الكود لهوست محدد
إذا لا ، يمكن ان يستخدم الكود من أي مكان

يريد حماية اكثر...

نفرض انه عنده برنامج ديسكتوب ولا يريد اختراقه للوصول إلى الكود
يستعمل هو نفسه api من موقعه
يعني يرسل طلب على موقعه، وموقعه يرسل طلب إلى موقعك ويأتي بالنتيجة
(هذه الطريقة تستعمل عندما يكون لديك موقع وتريد ان تعمل له تطبيق ديسكتوب، إذ ان التطبيق
لا يتصل بقاعدة البيانات انما بسكربت بينه وبين القاعدة - api)
هذه اصلا ً الطريقة المنطقية اذ انه اذا وزّع برنامج ديسكتوب وبعد ذلك استغنى عن خدمة موقعك
أو غيّر الكود عندها تتعطل كل برامج الديسكتوب

بالنسبة للحصول على معلومات الطرف الطالب جميعها تكون في الكائن request






ahmad sadiq is offline   قديم 11-06-2011, 12:39 AM
الرد مع إقتباس
عضو نشيط جدا
#3  

إقتباس:
المشاركة الأصلية بواسطة ahmad sadiq مشاهدة مشاركة
اقترح عليك ان تحدد عدد الطلبات كل يوم
يعني مثلًا المشترك الواحد يستطيع تقصير 1000 رابط في اليوم(خدمة تقصير روابط)
لكن لا اتوقع انه خيار جيد خاصة لو كانت الخدمة ليست تقصير روابط بل معلومات

إقتباس:
المشاركة الأصلية بواسطة ahmad sadiq مشاهدة مشاركة
الحالة الوحيدة السهلة للوصول لكود المشترك هي الجافاسكربت
وهنا يجب عليك ان تتيح للمشترك اختيارين:
1)امكانية استخدام الكود من أي host - يعني من أي دومين، أيبي وغيره (wildcard)
2)امكانية استخدام الكود من هوست\ات محدد\ة

إذا كان عنده جافاسكربت وحصلت معه مشاكل، يمكن ان يقفل الكود لهوست محدد
إذا لا ، يمكن ان يستخدم الكود من أي مكان
و هنا ما اريده كيف افعل ذلك في .NET بإستخدام نمط RESTFul
حاولت ان اقوم بمعرفة الهوست القادم منه الطلب لكن لم انجح



إقتباس:
المشاركة الأصلية بواسطة ahmad sadiq مشاهدة مشاركة
بالنسبة للحصول على معلومات الطرف الطالب جميعها تكون في الكائن request
الكائن request دائماً يرجع معلومات موقعي الذي اقدم منه الخدمة و لا يرجع معلومات
من اين اتى الطلب

ايضاً حاولت اغير الطريقة بإستخدام WCF لكي اتمكن من استخدام التابع

WebOperationContext.current.IncomingRequest

لكن هو نفس التابع HttpContext.Request تقريباً

--------

بارك الله فيك اخي احمد على ردك






عبدالله حسن is offline   قديم 11-06-2011, 06:14 PM
الرد مع إقتباس
مشرف قسم asp.net
#4  

الحل الأمثل حسب تصوري هو استخدام طريقة قديمة وهي WebService المبنية على WSDL لتصل لها من عدة اماكن
فالمستخدم لا يعنيه في النهاية عرض RESTfull ، أيضا هذا ليس سبب صنعها

وممكن استخدام عدة تقنيات في ان واحد مثلا ريستفل ، WCF وهكذا ، وتترك الخيار للمستخدم لكي يصل لما يريد






__________________
مطور مواقع ASP.NET & تطبيقات Windows 8 & تطبيقات جوال WP7
بريدي :khalilme at hotmail.com
خليل سليم is offline   قديم 11-06-2011, 07:11 PM
الرد مع إقتباس
عضو نشيط جدا
#5  

إقتباس:
المشاركة الأصلية بواسطة خليل سليم مشاهدة مشاركة
الحل الأمثل حسب تصوري هو استخدام طريقة قديمة وهي WebService المبنية على WSDL لتصل لها من عدة اماكن
فالمستخدم لا يعنيه في النهاية عرض RESTfull ، أيضا هذا ليس سبب صنعها

وممكن استخدام عدة تقنيات في ان واحد مثلا ريستفل ، WCF وهكذا ، وتترك الخيار للمستخدم لكي يصل لما يريد
بارك الله فيك

المقصد ليس هذا ما اعنيه يا استاذ خليل



دعني اوضح ما اقصده
مثلاً قمت انت بالتسجيل لدي لكي تحصل على الخدمة و بعد تسجيلك

حصلت على المفتاح API-KEY لكي يخولك الحصول على بيانات الخدمة

ثم قمت انت بدمج الخدمة في موقعك
اريد عند كل طلب يكون عن طريق موقعك اعرف انه من موقعك مع انه من الممكن ان اعرف انه قادم من موقعك عن طريق المفتاح الذي حصلت عليه لكن لو فرضنا ان مفتاحك

قام بإستخدامه شخص آخر من خلال موقع غير موقعك فحينها بإمكانه الحصول على البيانات
دون مشاكل لأنه يملك مفتاح صالح و هنا يكون لدي موقعين يستخدمون نفس المفتاح

و لا يمكن ان اعرف من هو صاحب المفتاح الأصل
لأني لا استطيع ان احصل على الدومين القادم منه الطلب

و هنا سؤالي هل استطيع عند كل طلب ان اتحقق من الدومين؟ كما افعل مع المفتاح عندما اتحقق منه هل هو صالح أم لا؟

هل يمكن اضافة عنوان رأسي يحمل الدومين القادم منه الطلب على سبيل المثال

اتمنى فهمت ما اعنيه...







آخر تعديل بواسطة عبدالله حسن في 11-06-2011 الساعة 07:48 PM.
عبدالله حسن is offline   قديم 11-06-2011, 07:46 PM
الرد مع إقتباس
عضو نشيط جدا
#6  

الحمدلله

كانت هناك إضافة في الصفحة التي اختبرها تقوم بتعديل طريقة النداءات ajax و get في jQuery
لذلك طلقت الإضافة بالثلاث
لأنها اخذت الوقت الكثير و تلاعبت بي و بنتائج الطلبات

فقمت بحذف الإضافة و استخدام النداءات مباشرة من core
و بالفعل كان يرسل عناوين رأسيه تحمل دومين الموقع القادم منه الطلب
عبر العناوين الرأسية التالية لذلك سأستخدمها في التحقق
العناوين الرأسية هي
Origin
Referer

رغم انه ليس حل كامل قد يمكن التلاعب بالعناوين كما كانت الإضافة تقوم به .. لكن شئ احسن من لا شئ
أيضاً لا ادري عن الخيارات الأخرى عندما يتم استخدام الخدمة عبر طرق أخرى غير الجافا هل سيرسل تلك العناوين ام لا
على العموم سأقوم بتجربة اغلب الطرق قد يكون هناك امور اخرى يتم التحقق منها..




شكراً لكم احمد , خليل على ردودكم







آخر تعديل بواسطة عبدالله حسن في 12-06-2011 الساعة 02:17 PM.
عبدالله حسن is offline   قديم 12-06-2011, 02:08 PM
الرد مع إقتباس
عضو سوبر نشيط
#7  

قم بالاستفادة من HTTP
أو قم بجلب الـ Remote IP والذي يمكنك من خلاله معرفة من قام بإرسال الطلب (باعتبار أن الطلب يتم إرساله من سيرفر على الإإنترنت والذي بدوره يمتلك Static IP ) 






__________________
نحن أمة إقرأ التي لا تقرأ
مبرمج إنترنت is offline   قديم 12-06-2011, 07:43 PM
الرد مع إقتباس
عضو نشيط جدا
#8  

إقتباس:
المشاركة الأصلية بواسطة مبرمج إنترنت مشاهدة مشاركة
قم بالاستفادة من HTTP
أو قم بجلب الـ Remote IP والذي يمكنك من خلاله معرفة من قام بإرسال الطلب (باعتبار أن الطلب يتم إرساله من سيرفر على الإإنترنت والذي بدوره يمتلك Static IP )

ما الفائدة !!!

إذا لم اعرف الموقع الذي اتى منه الطلب مثلاً www.google.com
لن استطيع ان احصل على Remote IP

و القضية كلها كيف احصل على الدومين و بإمكانك مراجعة الردود في الأعلى لتفهم
ما اقصده


على العموم ما توصلت بعد ان جربت الكثير من الطرق انه قد يكون شبه مستحيل
فمثلاً لو شخص قام بإستخدام HttpWebRequest للوصول لبيانات الخدمة
فلن استطيع ان اعرف اي شئ






عبدالله حسن is offline   قديم 12-06-2011, 09:17 PM
الرد مع إقتباس
الرد على الموضوع



أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
سؤال : هل استطيع اضافة دومين وتكوين موقع خلال بارك دومين new-lif سوالف الاستضافة 4 22-12-2010 04:17 AM
هل استطيع شراء كاش يو من خلال الفيزا ؟ ehkynet القسم العام 4 19-03-2010 07:17 PM
كيف استطيع نقل مجلد من خلال لوحة تحكم الموقع الباحث عن المعرفة الويب والويب 2.0 والـ Semantic Web 4 15-12-2007 08:57 PM
الأن لأصحاب السيرفرات شراء دومين للعملاء خلال ثواني والتشغيل خلال 24 ساعه kalifa سوالف الاستضافة 14 24-05-2003 11:18 AM
كيف استطيع تنفيذ أمر من أوامر التلنت من خلال php غطاوي الويب والويب 2.0 والـ Semantic Web 2 13-10-2001 04:44 PM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 08:57 PM.