رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از htmlentities برای ایمن وارد شدن دیتا
#1
سلام دوستان

تو قسمت درج مطلب برای متنی که کاربر وارد می کنه اومدم از تابع htmlentities استفاده کردم که اطلاعاتش تو بانک ذخیره بشه به این شکل :

htmlentities($_POST["Body"], ENT_QUOTES, "UTF-8");

هنگامی هم که می خوایم متنش رو نشون بدم از تابع htmlspecialchars استفاده کردم به این شکل :

<textarea class="ckeditor" >
    <?php echo htmlspecialchars($rec["Body"], ENT_QUOTES, 'UTF-8') ?>
</textarea>

می خوام بدونم می تونم مطمئن باشم که هک نمیشه ؟؟

و اینکه با تابع htmlspecialchars که می خوام متنو نشون بدم اچ تی ام الشم بهم نشون میده , چطور می تونم بگم فقط متن رو نمایش بده ؟؟؟
پاسخ
تشکر شده توسط:
#2
موقع نمایش توی TextArea اگه میخواین با ادیتورها کار کنید، نباید از htmlentities یا htmlspecialchars استفاده کنید. بجای این کار باید با کمک strip_tags فقط تگهایی که مجاز هستن رو بگذارین بمونن و بقیه تگها رو حذف کنید.

ضمناً کدها رو مستقیماً توی تگ shcode بگذارین و از تگهای code و php استفاده نکنید.
پاسخ
تشکر شده توسط: sm_pakdel , mgbg
#3
میشه واسه درج و نمایشش یه مثال بزنید ؟؟
پاسخ
تشکر شده توسط:
#4
برای درج توی دیتابیس که از همون Escape کردن خود MySQL استفاده کنید. برای نمایش هم فرض کنید میخواین فقط تگهای <b> و <i> و <u> و <p> و <span> و <div> مجاز باشن (بسته به اینکه چه ابزارهایی توی ادیتورتون فعاله میتونید بفهمین چه تگهایی رو لازم دارین مجاز کنین) :
<textarea class="ckeditor">
    <?php echo strip_tags($rec['body'], 'b i u p span div'); ?>
</textarea>
پاسخ
تشکر شده توسط: sorkhabi , mgbg
#5
سلام
از pdo استفاده کنیم این مشکل رو حل میکنه؟
مرسی
پاسخ
تشکر شده توسط:
#6
سلام و خسته نباشید به دوستان عزیز
من تو یه برنامه ای از ویرایشگر ckeditor استفاده کردم.(به تصویر زمیمه ی نگا بندازید)
این ویرایشگر رو در اختیار کاربران قرار دادم و همه ی کاربران میتونن با این ویرایشگر کار کنن.
ولی تا ب حال نمیدونستم که خطری هم داره:
آخه از pdo استفاده میکنم:همونطور هم که میدونید pdo خودش امنیت داره.
الآن ب نظرتون من چیکار کنم.
چطوری امنیت این ویرایشگر رو تسا کنم.
مرسی
پاسخ
تشکر شده توسط:
#7
(20-04-1394، 05:01 ب.ظ)olampiad نوشته: سلام
از pdo استفاده کنیم این مشکل رو حل میکنه؟
مرسی

نه، این بحثی که استارتر میکنه مربوط به حملات xss هستش، PDO برای جلوگیری از SQL Injection هستش.

استارتر @mgbg در مورد htmlpurifier سرچ کن.
پاسخ
تشکر شده توسط: olampiad
#8
سلام و خسته نباشید
به این کد های من ی نگا بندازید.
من از این تابع امنیتی استفاده میکنم.
آیا راه سازه برای ویرایشگر
مرسی

private function amniat($str){
	$amniat=trim($str);
	$amniat=htmlspecialchars($amniat);
	$amniat=strip_tags($amniat);
	$amniat=mysql_real_escape_string($amniat);
	return $amniat;
}



public function secrut($array){
$arr=$array;
foreach($arr as $key=>$val){
	 $arr[$key]=$this->amniat($val);
}
return $arr;
}
پاسخ
تشکر شده توسط:
#9
این قسمت از کدتون جالبته :
کد پی‌اچ‌پی:
$amniat=htmlspecialchars($amniat);
    
$amniat=strip_tags($amniat); 
وقتی htmlspecialchars اجرا بشه دیگه کد های اچ تی ام ال از اون حالت قبلی خارج میشن و در خط بعدی که strip_tags رو گذاشتید الکیه :D
موفق باشید
پاسخ
تشکر شده توسط:
#10
(20-04-1394، 07:52 ب.ظ)olampiad نوشته: سلام و خسته نباشید
به این کد های من ی نگا بندازید.
من از این تابع امنیتی استفاده میکنم.
آیا راه سازه برای ویرایشگر
مرسی

private function amniat($str){
	$amniat=trim($str);
	$amniat=htmlspecialchars($amniat);
	$amniat=strip_tags($amniat);
	$amniat=mysql_real_escape_string($amniat);
	return $amniat;
}



public function secrut($array){
$arr=$array;
foreach($arr as $key=>$val){
	 $arr[$key]=$this->amniat($val);
}
return $arr;
}

نه، این تابع های شما خوب نیست. هیچ تابعی پیش ساخته ای درون خود php نیست که به طور کامل امنیت رو از لحاظ xss تامین کنه، واسه همینه که کتابخونه htmlpurifier رو نوشتن، تا اونجایی که من میدونم تعداد خیلی زیادی از افراد و چند دانشگاه و چندین صاحب نظر مسائلی امنیتی توی نوشتن این کتابخونه سهیم بودن و چیز واقعا خوبیه.
مورد بعدی اینکه تابع mysql_real_escape_string یک تابع معمولی مثل strip_tags نیستش که همینجوری روی هوا صدا زدینش و ازش دارین استفاده میکنید! این تابع باید مطابق با charset ای که set کردید باشه و اول به دیتابیس کانکت بشید و موقع کوئری زدن از این تابع قبلش استفاده کنید. این قضیه رو توی mysqli که مطمئنم ولی mysql رو دقیق مطمئن نیستم.
پاسخ
تشکر شده توسط: mgbg , olampiad
#11
خوبه که از مرحوم eshphilen هم یادی بکنیم، روحش همیشه زنده اس Ybiggrin
http://hamidreza-mz2.tk/?p=730
پاسخ
تشکر شده توسط: sorkhabi
#12
سایتهاش هم مثل خودش همیشه فیلتره.
پاسخ
تشکر شده توسط: sorkhabi
#13
سلام
ببخشین جسارته
این کسی که میگید کیه؟
چیکارس؟
مرسی
پاسخ
تشکر شده توسط:
#14
eshpilen توی سایت برنامه نویس.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان