PHP: جعل البيانات تظهر للدومين المصرح به

  • extradev

السلام عليكم

لدي api وأريد نشرها بشكل عام ولكن بإستخدام مقنن .. نظرا لحساسية البيانات .. وللتحقق من صاحب الطلب تم وضع بارامتر token .. ولكن تبقى هناك مشكلة وهي أن الـ token هذا يمكن استخدامه في أي موقع وهذا ما لا أريده

سؤالي هو عند طلب ال api

ما أريده هو أن يصلني قبل عرض البيانات الدومين الذي قام بطلب البيانات .. إن كان متوافق من الـ token المسجل في قاعدة البيانات يتم عرض البيانات وإن كان العكس .. تظهر له مثلا رسالة no access

يعني:

qQbThoetiZQwO2f7cMms = alloweddomain.com .. تظهر البيانات

qQbThoetiZQwO2f7cMms = notalloweddomain.com .. لا تظهر البيانات

بحثت كثيرا ولم أجد ما أريده حتى ولو مثال مشابه له :(

شكرا لكم

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

الapi يُطلب من متصفح ما؟ إذًا العنوان يرسل في header(الترويسة) Referer أو Host، لكن دائمًا لا تثق بالبيانات يمكن تغيرها دائمًا. لما لا تتاكد من خلال الip؟ أم تريد منع موقع معيِّن من الطلب من خلاله؟ ماذا تحاول أن تفعل:)؟

الapi سوف يطلب بواسطة لغة البرمجة نفسها ..

مثلا ال php سيكون الطلب بواسط file_get_contents أو curl

أريد السماح فقط للدومين المرتبط بالـ token الخاص به لعرض البيانات

إذًا عليك استخدم الip إن كان سيرسل من خادم آخر، اجعل الtoken مرتبط بعنوان الخادم الآخر.

يبدو أنه لا توجد سوى هذه الطريقة :(

وإن كان يستخدم cloudflare؟ هنا الطريقة لا تجدي نفعاً بالمرة

إذًا أرسل الدومين مع الطلب.

تقصد برارميتر مثلا domain=example.com

في هذه الحالة سيستطيع أي شخص وضعها مع الطلب وجلب البيانات.

أعتقد أنه لا توجد طريقة لتنفيذ المطلوب سوى بالأي بي.

شكرا لك

لماذا لاتستخدم (غير امنه)HTTP_REFERRER للحصول علي اسم الدومين او رقم ip تم تتحق اذا الدومين مسجل في قاعده البيانات ؟

HTTP_REFERRER تفيد في حال الدخول للرابط من موقع آخر في المتصفح .. واستخداماتها على الأغلب للتحقق من مصدر الزوار

صحح لي المعلومة إن كانت خاطئة

لم افهم سوالك بشكل جيد... ماتريد هو اولا التحقق من الدومين... اذا كان مصرح به ثم تحقق من التوكن اذا كان مطابق ترسل البيانات؟

بالضبط ولكن هذا كله سيكون من جانب الخادم وليس العميل

أي انه سيتم طلب البيانات بواسطة get_user_content او curl .. هذا بالنسبة لل php وليس بواسطة المتصفح أو جافاسكربت

توضيح فقط عند طلب ال api لن يظهر لك عنوان الموقع لان الطلب يتم على مستوى php للسيرفر سواء استخدم العميل طلب عبر file_get_contents او curl و في افضل الأحول ستحصل على IP Host

الطريقة كالتالي صديقي ...

اولاً عند تخزينك لكل نطاق في قاعدة بياناتك الخاصة ب api قم بتخزين رقم الاي بي الخاص بهذا النطاق الى جانب النطاق نفسه .

ثانياً عند طلب api من خلال نطاق بعيد فسوف يرسل لك رقم الاي بي REMOTE_ADDR ويمكنك مقارنته مع الارقام المسجلة لديك ، فاذا كان موجود تقوم بقبول الطلب اذا لم يكن موجود ترجع رسالة invalid domain

من أفضل الحلول .. وأقربها لتؤدي الغرض

أشكرك يا صديقي وسيتم اعتماد هذه الطريقة :)