سلام دوستان
تو قسمت درج مطلب برای متنی که کاربر وارد می کنه اومدم از تابع htmlentities استفاده کردم که اطلاعاتش تو بانک ذخیره بشه به این شکل :
htmlentities($_POST["Body"], ENT_QUOTES, "UTF-8");
هنگامی هم که می خوایم متنش رو نشون بدم از تابع htmlspecialchars استفاده کردم به این شکل :
<textarea class="ckeditor" >
<?php echo htmlspecialchars($rec["Body"], ENT_QUOTES, 'UTF-8') ?>
</textarea>
می خوام بدونم می تونم مطمئن باشم که هک نمیشه ؟؟
و اینکه با تابع htmlspecialchars که می خوام متنو نشون بدم اچ تی ام الشم بهم نشون میده , چطور می تونم بگم فقط متن رو نمایش بده ؟؟؟
موقع نمایش توی TextArea اگه میخواین با ادیتورها کار کنید، نباید از htmlentities یا htmlspecialchars استفاده کنید. بجای این کار باید با کمک strip_tags فقط تگهایی که مجاز هستن رو بگذارین بمونن و بقیه تگها رو حذف کنید.
ضمناً کدها رو مستقیماً توی تگ shcode بگذارین و از تگهای code و php استفاده نکنید.
میشه واسه درج و نمایشش یه مثال بزنید ؟؟
برای درج توی دیتابیس که از همون Escape کردن خود MySQL استفاده کنید. برای نمایش هم فرض کنید میخواین فقط تگهای <b> و <i> و <u> و <p> و <span> و <div> مجاز باشن (بسته به اینکه چه ابزارهایی توی ادیتورتون فعاله میتونید بفهمین چه تگهایی رو لازم دارین مجاز کنین) :
<textarea class="ckeditor">
<?php echo strip_tags($rec['body'], 'b i u p span div'); ?>
</textarea>
سلام
از pdo استفاده کنیم این مشکل رو حل میکنه؟
مرسی
سلام و خسته نباشید به دوستان عزیز
من تو یه برنامه ای از ویرایشگر ckeditor استفاده کردم.(به تصویر زمیمه ی نگا بندازید)
این ویرایشگر رو در اختیار کاربران قرار دادم و همه ی کاربران میتونن با این ویرایشگر کار کنن.
ولی تا ب حال نمیدونستم که خطری هم داره:
آخه از pdo استفاده میکنم:همونطور هم که میدونید pdo خودش امنیت داره.
الآن ب نظرتون من چیکار کنم.
چطوری امنیت این ویرایشگر رو تسا کنم.
مرسی
(20-04-1394، 05:01 ب.ظ)olampiad نوشته: [ -> ]سلام
از pdo استفاده کنیم این مشکل رو حل میکنه؟
مرسی
نه، این بحثی که استارتر میکنه مربوط به حملات xss هستش، PDO برای جلوگیری از SQL Injection هستش.
استارتر @mgbg در مورد htmlpurifier سرچ کن.
سلام و خسته نباشید
به این کد های من ی نگا بندازید.
من از این تابع امنیتی استفاده میکنم.
آیا راه سازه برای ویرایشگر
مرسی
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
$amniat=htmlspecialchars($amniat);
$amniat=strip_tags($amniat);
وقتی htmlspecialchars اجرا بشه دیگه کد های اچ تی ام ال از اون حالت قبلی خارج میشن و در خط بعدی که strip_tags رو گذاشتید الکیه :D
موفق باشید