الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام ملفات php خارجية باستخدام include

بدأه the_sowrd في 27 أغسطس 2012 · 6 رد · 690 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد تأمين اكواد php الخاصة بي من السرقة لذا فكرت ان ارفع الملفات التى تحتوى على الدوال التى سأستعملها على السيرفر الخاص بي ثم اعيد استخدامها فى اى موقع اخر مثل "www.kimoland.com" عن طريق استخدام

include("www.saberali.com/mylib/orderlist.php")

ولكن هذه الطريقة لا تعمل حتى بعد ان غيرت قيمة الخاصية allow_url_include الى on او 1 فى ملف php.ini

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

وجزاكم الله خيرا

#2

أخي الكريم إستخدم دالة file_get_contents ..

وطريقة إستعمالها كالتالي ..

file_get_contents(url"")

حيث أن Url هو عنوان الملف ..

ولكن عرف متغير وضع في هذه الدالة .. كالتالي ..

$response = file_get_contents("url");

ثم إستخدم أمر Echo كالتالي ..

echo $response;

أتمنى أني ساعدتك ..

تحياتي :happy:

1

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#3

لن تستطيع فعلياً حمايته من السرقة على الإطلاق، وفيما يلي توضيح للأسباب:

1- بداية فلو قمت بـ remote include

include("www.saberali.com/mylib/orderlist.php")

فإن الشفرة الموجودة في orderlist.php سيتم معالجتها على أساس أنها PHP على السيرفر المستضيف، وما سيتم تضمينه في صفحتك هو فقط الـ OUTPUT الذي تحصل عليه من معالجة محتوى الصفحة..

بالتالي لنفرض أن الصفحة تحوي على class يحتوي على توابع فقط.. ولا يوجد أي output (أي لا يوجد مثلاً أي echo / print / HTML / ...) بالتالي فالـ include ستقوم بتضمين... لا شئ!

2- حتى تستطيع تضمين شفرة وجعلها تنفذ على السيرفر الذي يطلب تلك الصفحة (وليس على السيرفر الذي يستضيف تلك الصفحة) فستحتاج إلى أن تقوم بمنع الـ web server من معالجتها.. مثلاً أن تكون اللاحقة .txt أو .php.inc أو .inc أو .phps .. إلخ

المهم ألا تكون صفحة يمكن معالجتها من الويب سيرفر المستضيف، ويمكنك أيضاً أن تتركها .php لكن بشرط أن يتم ECHO كل محتواها كنص عادي (هذه الطريقة ستتعبك ولا فائدة منها فعلياً)

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

الحل الوحيد الذي يمكنك به حماية تلك الشفرة هي من خلال تمرير البارامترات لها، إلى السيرفر المستضيف وتقوم بتضمين النتيجة فقط، مثلاً:

include("www.saberali.com/mylib/orderlist.php?foo=$bar")

لكن هل فعلاً سترغب في أن يتم استهلاك عرض الحزمة الخاصة بموقعك من قبل بقية المواقع بسبب رغبتك بحماية الشفرة؟ هذا الأمر يعود إليك.

1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4
bahbah كتب:

أخي الكريم إستخدم دالة file_get_contents ..

وطريقة إستعمالها كالتالي ..

file_get_contents(url"")

حيث أن Url هو عنوان الملف ..

ولكن عرف متغير وضع في هذه الدالة .. كالتالي ..

$response = file_get_contents("url");

ثم إستخدم أمر Echo كالتالي ..

echo $response;

أتمنى أني ساعدتك ..

تحياتي :happy:

شكرا لك اخى ولكن هذه الطريقة لم تفلح معى

Xacker كتب:

لن تستطيع فعلياً حمايته من السرقة على الإطلاق، وفيما يلي توضيح للأسباب:

1- بداية فلو قمت بـ remote include

include("www.saberali.com/mylib/orderlist.php")

فإن الشفرة الموجودة في orderlist.php سيتم معالجتها على أساس أنها PHP على السيرفر المستضيف، وما سيتم تضمينه في صفحتك هو فقط الـ OUTPUT الذي تحصل عليه من معالجة محتوى الصفحة..

بالتالي لنفرض أن الصفحة تحوي على class يحتوي على توابع فقط.. ولا يوجد أي output (أي لا يوجد مثلاً أي echo / print / HTML / ...) بالتالي فالـ include ستقوم بتضمين... لا شئ!

2- حتى تستطيع تضمين شفرة وجعلها تنفذ على السيرفر الذي يطلب تلك الصفحة (وليس على السيرفر الذي يستضيف تلك الصفحة) فستحتاج إلى أن تقوم بمنع الـ web server من معالجتها.. مثلاً أن تكون اللاحقة .txt أو .php.inc أو .inc أو .phps .. إلخ

المهم ألا تكون صفحة يمكن معالجتها من الويب سيرفر المستضيف، ويمكنك أيضاً أن تتركها .php لكن بشرط أن يتم ECHO كل محتواها كنص عادي (هذه الطريقة ستتعبك ولا فائدة منها فعلياً)

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

الحل الوحيد الذي يمكنك به حماية تلك الشفرة هي من خلال تمرير البارامترات لها، إلى السيرفر المستضيف وتقوم بتضمين النتيجة فقط، مثلاً:

include("www.saberali.com/mylib/orderlist.php?foo=$bar")

لكن هل فعلاً سترغب في أن يتم استهلاك عرض الحزمة الخاصة بموقعك من قبل بقية المواقع بسبب رغبتك بحماية الشفرة؟ هذا الأمر يعود إليك.

شكرا لك على الرد الوافي واتفق معك كثيرا .......... ولكنى فى حيرة من امري فماذا افعل اذا لاحمى هذه الاكواد من اعادة الاستخدام مرة اخرى بطريقة لا تعيق الاستخدام

#5

هل قمت بالسماح للallow_url_include في كلا السيرفرين ؟؟

وهذا الكود كاملاً .. كما يجب ..

<?php
$response = file_get_contents("http://");
echo $response;
?>

لقد إٍستخدمته على سيرفرين متباعدين ونجح الأمر ..

جرب الآن وأخبرني ..

تحياتي :happy:

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#6
the_sowrd كتب:

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

PHP obfuscation: مثلاً: http://www.codeproject.com/Articles/15124/PHP-Obfuscator

أو

byte-code compilers: مثلاً: http://www.ioncube.com

ابحث عن التطبيقات التي تناسبك في هذا الخصوص.

* بالمناسبة: كلامي في المشاركة 3 ينطبق أيضاً على توابع قراءة الملفات مثل file_get_contents(...)

1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

اعتقد الطريقة التي تحاول بها حماية ملفاتك غير مجديه

جرب حلول التشفير او التمويه التي ذكرها لك الاخ Xacker في الرد رقم 6

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

مواضيع مشابهة