PDA

View Full Version : سوال: چطور متن editor را کنترل کنیم؟



abdollah110110
سه شنبه 21 بهمن 1393, 11:59 صبح
سلام دوستان

وقتی یه editor داریم که با آن کدها هم ارسال میشوند(مثل همین که باهاش تاپیک ایجاد میکنیم)، برا جلوگیری از هک و کنترل داده های کاربران چه باید بکنیم؟

متشکرم

martoor
سه شنبه 21 بهمن 1393, 15:32 عصر
با این تابع امن کن متنتو:


function txtProcess($source) {

if( function_exists( "get_magic_quotes_gpc" ) && get_magic_quotes_gpc() ) $source = stripslashes( $source );

$source = str_ireplace( "{include", "{include", $source );
$source = str_ireplace( "{content", "{content", $source );
$source = str_ireplace( "{custom", "{custom", $source );

$source = $this->remove( $this->decode( $source ) );

if( $this->code_count ) {
foreach ( $this->code_text as $key_find => $key_replace ) {
$find[] = $key_find;
$replace[] = $key_replace;
}
$source = str_replace( $find, $replace, $source );
}

$this->code_count = 0;
$this->code_text = array ();

$source = preg_replace( "#<script#i", "&lt;script", $source );

if ( !$this->safe_mode ) {
$source = preg_replace_callback( "#<iframe(.+?)src=['\"](.+?)['\"](.*?)>(.*?)</iframe>#is", array( &$this, 'check_frame'), $source );
}

$source = str_ireplace( "<iframe", "&lt;iframe", $source );
$source = str_ireplace( "</iframe>", "&lt;/iframe&gt;", $source );
$source = str_replace( "<?", "&lt;?", $source );
$source = str_replace( "?>", "?&gt;", $source );

$source = addslashes( $source );
return $source;
}

abdollah110110
چهارشنبه 22 بهمن 1393, 13:29 عصر
آیا استفاده از تابع mysql_real_escape_string به تنهایی کافی نیست؟

MMSHFE
چهارشنبه 22 بهمن 1393, 15:20 عصر
تابع mysql_real_escape_string فقط کدهای مخرب SQL رو خنثی میکنه و فرضاً کاری به تگ script که داخل متن ممکنه گذاشته شده باشه و با کمک اون باگ XSS و... ایجاد بشه توی کد شما نداره. بهتره از کلاس HTML Purifier استفاده کنید.

abdollah110110
سه شنبه 28 بهمن 1393, 20:20 عصر
نحوه نصب HTML Purifier:


require_once 'htmlpurifier/library/HTMLPurifier.auto.php';
$editor1=$_POST['editor1'];
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_editor1 = $purifier->purify($editor1);