PDA

View Full Version : گفتگو: توسعه fckeditor - fileman



nextplus
چهارشنبه 02 اردیبهشت 1388, 00:31 صبح
اگه دوستان اجازه بدهند یک کم رو توسعه fckeditor و البته بیشتر قسمت fileman کار کنیم.
من با لینک دادن fileman بطور مستقیم روی یک textbox شروع می کنم .



<script>
function fexp(inp){
window.SetUrl=function(value){
document.getElementById(inp).value=value;
}
var filemanager='editor/editor/filemanager/browser/default/browser.html';
var connector='connectors/php/connector.php';
window.open(filemanager+'?Connector='+connector+'&Type=Image','fileupload','modal,width=600,height=4 00');
}

</script>


که مقدار متغیر filemanager آدرس همون فایل browser.html رو وارد میکنیم و
متغیر connector که مقدار اون آدرس فایل کانکتور رو قرار میدیم .




<input name="fspic" type="text" id="fimg1" size="50" maxlength="100" value="<?php echo($row['spic']) ?>" />
<input type="button" value="انتخاب" onclick="fexp('fimg1')" />

خب اگه متغیرهارو درست ست کنیم بعد از زدن دکمه انتخاب پنجره fileman ادیتور fckeditor رو باز میکنه و بعد از انتخاب آدرس اون فایل رو داخل input box میندازه .

nextplus
یک شنبه 06 اردیبهشت 1388, 09:10 صبح
بحث دیگه ای که برنامه نویسان رو نگران میکنه همون امنیت سایت هایی که میسازند هست.

البته قابل ذکره که شما اگه از fckeditor به همین صورت ساده استفاده کنید هکرها خیلی راحت میتونند به سایتتون حمله کنند و از راه آپلود کردن بدون مجوز فایل روی سایتتون به شما شل بزنند.

برای جلوگیری از این حملات و من 2 تا فایل رو بازنویسی کردم که شامل connector.php و upload.php هستش .

اصول کار بدین صورته که وقتی یوزر وارد ادمین خودش میشه یک session روی سرور ایجاد میکنه و من از این session برای شناسایی کاربر مجاز یا همون ادمین استفاده کردم .


کدهای ابتدایی connector.php رو بصورت زیر تغییر بدید.



session_start();
ob_start() ;

require('./config.php') ;
require('./util.php') ;
require('./io.php') ;
require('./basexml.php') ;
require('./commands.php') ;
require('./phpcompat.php') ;


if (isset($_SESSION['a_id'])){
if ($_SESSION['a_id']!='#User') $Config['Enabled'] = true ;
} else { $Config['Enabled'] = false ;}
if ( !$Config['Enabled'] )
SendError( 1, 'لطفا خود را به سيستم معرفي كنيد ! در غير اين صورت امكان استفاده از اين قسمت را نداريد !!!' ) ;

DoResponse() ;
با این عمل هر وقت که کاربر اقدام به دسترسی به fileman رو می کنه ابتدا session کاربر چک میشه و اگر set نشده بود خطا رو به browser بر میگردونه .

خب تا اینجا جلوی باز شدن fileman رو بدون مجوز گرفتیم . اما یک مشکل دیگه هم وجود داره که اون هم آپلود مستقیم از پنجره های ادیتور رو سرور ه که اون رو هم با کد زیر می تونیم حلش کنیم .

کدهای ابتدایی upload.php رو بصورت زیر تغییر بدید.


session_start();
require('./config.php') ;
require('./util.php') ;
require('./io.php') ;
require('./commands.php') ;
require('./phpcompat.php') ;



function SendError( $number, $text )
{
SendUploadResults( $number, '', '', $text ) ;
}
// Check if this uploader has been enabled.
if (isset($_SESSION['a_id'])){
if ($_SESSION['a_id']!='#User') $Config['Enabled'] = true ;
} else { $Config['Enabled'] = false ;}
if ( !$Config['Enabled'] )
SendError( 1, 'لطفا خود را به سيستم معرفي كنيد ! در غير اين صورت امكان استفاده از اين قسمت را نداريد !!!' ) ;

$sCommand = 'QuickUpload' ;


خب حالا می تونیم با خیال راحت از fckeditor تو سایتامون استفاده کنیم .
البته توجه کنید که شما هر طور که کاربر رو شناسایی می کنه همون شرطها رو به جای شرطهای من استفاده کنید .