PDA

View Full Version : حرفه ای: محدود کردن توابع قابل استفاده در یک فایل PHP



alinwp
پنج شنبه 28 اسفند 1393, 21:13 عصر
سلام
راستش من قصد دارم یه کامپایلر آنلاین PHP درست کنم(حداقل برای خودم:چشمک:) حالا ترس من اینه که کاربر بتونه با استفاده از این سرویس فایلها رو مدیریت کنه خواستم لیست این توابع رو فیلتر کنم که گفتم شاید کدشو هش کنه و ... حالا شما یه راهی رو بگید که توابع رو بتونم از کار بندازم
یه راه خودم پیدا کردم که استفاده از ماژول APD تو PHP بود ولی نتونستم برای ویندوزشو گیر بیارم
تابع :




rename_function ( string $original_name , string $new_name )
لینک:

http://php.net/manual/en/function.rename-function.php

amin1softco
جمعه 29 اسفند 1393, 11:12 صبح
خوب اگر سی پنل استفاده کنید هر پوشه ایی فک کنم می تونه یک php.ini داشته باشه و شما فک کنم بتونی زمان اجرا پوشه و فایل php.ini را تولید کنید و داخلش disable-functions (http://us3.php.net/manual/en/ini.core.php#ini.disable-functions)را مشخص کنید
اگر بخواهید کاملاً کنترل کنید از تابع debug_backtrace (http://php.net/manual/en/function.debug-backtrace.php) استفاده کنید و اگر اون توابع اجرا شد کاربر را بیرون بندازید :دی

alinwp
جمعه 29 اسفند 1393, 16:06 عصر
خوب اگر سی پنل استفاده کنید هر پوشه ایی فک کنم می تونه یک php.ini داشته باشه و شما فک کنم بتونی زمان اجرا پوشه و فایل php.ini را تولید کنید و داخلش disable-functions (http://us3.php.net/manual/en/ini.core.php#ini.disable-functions)را مشخص کنید
اگر بخواهید کاملاً کنترل کنید از تابع debug_backtrace (http://php.net/manual/en/function.debug-backtrace.php) استفاده کنید و اگر اون توابع اجرا شد کاربر را بیرون بندازید :دی
ممنون ولی میشه کمی بیشتر درباره تابع debug_backtrace (http://php.net/manual/en/function.debug-backtrace.php) و کاری که من میخوام انجام بدم توضیح بدید و یک مثال بنویسید

amin1softco
جمعه 29 اسفند 1393, 18:03 عصر
چیزی که شما نیاز دارید اینه که توابعی که کاربر اجرا می کنه را پیدا کنید و با توابع غیر مجاز مقایسه و در صورت رخداد چنین واقعه ایی از ادامه اجرای برنامه صرف نظر کنید .
تابع بالا شاید زیاد بدرد شما نخوره ولی این تابع لیست فراخوانی هایی که انجام شده تا رسیدن به مکانی که این تابع فراخوانی شده را درون یک آرایه قرار میده حالا شما نیاز به یک ابزار شبیه این دارید که بیاد توابع پی اچ پی که تا این مرحله اجرا شده تریس کنید برای مثال

$e = new Exception;
var_dump($e->getTraceAsString());

#2 /usr/share/php/PHPUnit/Framework/TestCase.php(626): SeriesHelperTest->setUp()
#3 /usr/share/php/PHPUnit/Framework/TestResult.php(666): PHPUnit_Framework_TestCase->runBare()
#4 /usr/share/php/PHPUnit/Framework/TestCase.php(576): PHPUnit_Framework_TestResult->run(Object(SeriesHelperTest))
#5 /usr/share/php/PHPUnit/Framework/TestSuite.php(757): PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult))
#6 /usr/share/php/PHPUnit/Framework/TestSuite.php(733): PHPUnit_Framework_TestSuite->runTest(Object(SeriesHelperTest), Object(PHPUnit_Framework_TestResult))
#7 /usr/share/php/PHPUnit/TextUI/TestRunner.php(305): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult), false, Array, Array, false)
#8 /usr/share/php/PHPUnit/TextUI/Command.php(188): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#9 /usr/share/php/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#10 /usr/bin/phpunit(53): PHPUnit_TextUI_Command::main()
#11 {main}"
شما به لینک های زیر یک نگاهی بندازید :
https://github.com/Qihoo360/phptrace
https://github.com/phacility/xhprof