PDA

View Full Version : سوال: addslashes,htmlspecialchars,...



ayub_coder
شنبه 02 بهمن 1389, 00:05 صبح
با سلام خدمت دوستان.
می گن واسه ذخیره اطلاعات تو دیتابیس برای اینکه مشکلی پیش نیاد از دستورات
addslashes یا htmlspecialchars استفاده کنید تا از بروز مشکلات امنیتی جلوگیری بعمل بیاد
اینا کارشون هم درسته
ولی وقتی من از ماژولی مثل tinymce استفاده می کنم کلی تگ برای من تولید میکنه مثلا واسه درج عکس و لینک و غیره
حالا. وقتی اینکود میکنم(htmlspecialchar یا addslashes) و به همون صورت اینکود شده نمایش میدیم. قطعا عکسها و لینکها درست نمایش داده نمشن چون به یک تک عکس به این شکل در میاد

<img href=&quto;a.jpg&quto >

اگه در خروجی اینا رو دیکد کنیم و نمایش بدیم باز همون آش و همون کاسه. انگار که انکود نکردیم.
حالا باید چکار گنیم که هم امنیت سایت بالا بره. (از نظر تزریق کد و غیره) هم اینکه محتوایی که توسط نرم افزارایی مثل tinymce تولید میشن درست نمایش داده بشن
معزلی شد برای من . اساتید لطفا راهنمایی کنن.:گریه:

fcsooti
شنبه 02 بهمن 1389, 12:34 عصر
اگه در خروجی اینا رو دیکد کنیم و نمایش بدیم باز همون آش و همون کاسه. انگار که انکود نکردیم.
درستش همینه دیگه باید دیکد کنی و نمایش بدی، اول از دیتابیس می کشی بیرون و بعد انکود می کنی و ربطی به دیتابیس نداره اون موقع و دیکد کردن موقع نمایش مشکلی از نظر امنیت ایجاد نمی کنه.

ayub_coder
شنبه 02 بهمن 1389, 13:11 عصر
خوب وقتی دیکود میکنم دوباره با حالت اولیه بر میگردونه. مثلا اگه بخش کامنت داشته باشم اگر یکی بیاد و این کد اسکریپت رو بنویسه موقعی که به دیتا بیس اضافه می کنم که اینکد میشه هیچ مشکلی پیش نمیاد ولی موقع نمایش اگه دیکد کنم باز به حات اولیه برمیگرده و کد های html برای مرورگر قابل شناسایی و اجرا خوهد شد.مثلا در قسمت کامنت اگه کاربر وارد کنه


<script src="http://somesite/mycode.js"> </script>
این کد موقع وارد شدن به دیتابیس اینکود میشه و هیچ، ولی موقع چاپ کامنت روی صفحه باز به حالت قبلی برمیکرده و کد جاوا سکریپت کار خواهد کرد.
امید وارم متوجه شده باشید چی گفتم.اصل مشکل رو.

binyaft
شنبه 02 بهمن 1389, 15:06 عصر
برادر میتونی از BBCODE ها استفاده کنی مثل [ b] [/ b]

ayub_coder
شنبه 02 بهمن 1389, 15:41 عصر
برادر بین یافت مثل اینکه دقیق منظور بنده رو متوجه نشدین.من می خوام هم خروجی که از tinymce گرفتم و اینکودش کردم درست در خروجی نمایش بدم. هم اینکه امنیت پایین نیاد. :افسرده:

binyaft
شنبه 02 بهمن 1389, 17:23 عصر
خوب این ویرایشگر ها ی گزینه ای داره که تبدیل میکنه به bbcode بعد به شما کد رو میده ، شما اونو encode کن برید داخل دیتابیس بعد bbcode رو دیکد کن و نمایش بده ، اینطوری فک نکنم مشکلی پیش بیاد

ayub_coder
شنبه 02 بهمن 1389, 17:42 عصر
میشه در مورد bbcode توضیح بدین. ؟
چجوری فقط bbcode رو دیکود کنم؟

binyaft
شنبه 02 بهمن 1389, 22:01 عصر
یه سری کد ها هستن مثل کد های ویرایشگر همین انجمن !
خودتون میتونید یه تابع بنویسید که این کار رو انجام بده یا
http://php.net/manual/en/book.bbcode.php
http://articles.sitepoint.com/article/bb-code-php-application

manager_66
چهارشنبه 05 بهمن 1390, 02:27 صبح
سلام .من هم با این ادیتور مشکل دارم . من مقادیر فرستاده شده با ادیتور رو به این شکل ذخیره میکنم :



$text= trim(mysql_real_escape_sting($_POST['text']))


نمایش این اطلاعات تا وقتی که تو متن از 'و " استفاده نشه درسته ولی اگه تو متن ذخیره شده از ' " استفاده بشه موقع بازخوانی متن به جای ' \n قرار میده . که زیاد جالب نیست . راهی برای حل این مشکل هست ؟

eshpilen
چهارشنبه 05 بهمن 1390, 15:35 عصر
باید از برنامه های مفصلی مثل htmlpurifier استفاده کنی.
چون واقعا داستان به این سادگی نیست و از هزارجا هم نفوذ میکنن که عقل جن بهش نمیرسه.
این لینک (http://barnamenevis.org/showthread.php?300377-%DA%A9%D9%85%DA%A9-%D9%81%D9%88%D8%B1%DB%8C%D8%9F-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D8%A7%D8%A8%D8%B9-preg_replace&p=1330632&viewfull=1#post1330632) رو بخون طرز استفادش رو توضیح دادم.

ayub_coder
پنج شنبه 06 بهمن 1390, 12:59 عصر
یک سال پیش در چنین روزی این سوال رو پرسیده بودم . :لبخند: