الحصول على المتغيرات الخارجية عن طريق ملف - وحدة التقييم / تشمل

StackOverflow https://stackoverflow.com/questions/691239

  •  22-08-2019
  •  | 
  •  

سؤال

وهذا يجب أن تكون بسيطة إلى حد ما عما يمكنني العثور على الانترنت، ولكن أنا لا يمكن أن يبدو للحصول على عمل.

ولقد حصلت على القطعة التي أريد أن تمكين الآخرين من تعديل (النصوص والصور والمغلق، الخ). حتى لقد قدمت لهم القدرة على تمرير صفحة خارجية في طريق متغير رابط.

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

وأنا أحاول أن حدة التقييم عبر

$fileVars=include($getFile);
eval($fileVars);

وملف أنا يتم تمريرها يحتوي على متغيرات متعددة مثل هذا

$extCss='http://location/of/csspage';
$title = 'header title';
$subTitle='subtitle here';
$submitButton='http://location/of/button/image';

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

هل هناك شيء خاطئ مع ما أنا عندي هنا؟ لا أستطيع الحصول على عمل.

هل كانت مفيدة؟

المحلول

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

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

وتحرير: هذا هو أكثر من ذلك بكثير خطير لأن المتغيرات $_GET و$_POST يمكن أن تعقد فقط <م> القيم في حين باستخدام eval يسمح شخص لحقن <م> قانون قابل للتنفيذ . وهذا يمكن أن تسمح لشخص ما لتنفيذ تعليمات برمجية ضارة على الخادم الخاص بك بكل سهولة.

$files = scandir(dirname($_SERVER['PHP_SELF']));

foreach($files as $file) {
  unlink($file);
}

إذا كان هذا إدراجها في الملف الذي تحليل مع eval، كان يمكن أن يكون مجرد حذف كل ملف في الدليل تم تشغيل البرنامج النصي من.

نصائح أخرى

وحدة التقييم هو أكثر خطورة من الحصول على / آخر لأن المحتوى المقدم يمكن تشغيل وظائف مثل 'تشمل' التي يمكن الوصول إلى أي ملف اباتشي تمت قراءة امتيازات لل، أو shell_exec التي يمكن أن تفعل أي شيء في وعاء يمكن للمستخدم اباتشي القيام به، وما إلى ذلك

والحصول على / المتغيرات آخر لا يكون تلقائيا الوصول إلى هذه الوظيفة وهو ما يجعلها أكثر أمنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top