PDA

View Full Version : سوال: کسی می تونه در مورد BBCode توضیح بده؟



idocsidocs
شنبه 15 مرداد 1390, 13:00 عصر
تااونجا که می دونم BBCode برای ادیتورهای تحت وب بکار می ره ولی دقیقا نمی دونم که چه کاربردی دارن و چطور باید ازشون استفاده کرد.

لطفا در این مورد توضیح بدید.

idocsidocs
سه شنبه 25 مرداد 1390, 00:47 صبح
دوستان در این مورد نظری ندارن؟

idocsidocs
سه شنبه 25 مرداد 1390, 00:52 صبح
دوستان در این مورد نظری ندارن؟

eshpilen
سه شنبه 25 مرداد 1390, 01:00 صبح
خب اینا رو گذاشتن چون استفاده از تگهای HTML بخاطر پیچیدگی کنترل اونها خطرناکه.
ولی BBCode یه چیزی هست که فانکشنالیتی چندانی نداره و توسط مرورگر شناسایی و اجرا نمیشه و بنابراین شما میتونید با خیال راحت باهاش کار کنید.
یعنی بسادگی وقتی مثلا رشته [b] رو توی متن پیدا کردید اون رو با تگ <b> جایگزین میکنید.
استاندارد BBCode هم صرفا برای این بوده که اینطور نرم افزارها مثل نرم افزارهای فروم همه از یک نوع شناسه برای این علامتها استفاده کنن و کدهای اونها با هم سازگار و قابل انتقال باشه از یک نرم افزار به نرم افزار دیگه. وگرنه میشه مثلا یه نرم افزار دیگه از چیزی مثل #b# یا --b-- بجای [b] استفاده کنه. هرچیزی میشه. فقط از نظر HTML خطرناک نباشه!

Metal Gear Solid
سه شنبه 25 مرداد 1390, 02:54 صبح
کسی یک ادیتور خوب و کامل BB سراغ نداره؟
به جای استفاده از tinyMCE یا CKEditor یا غیره ... .

alismith
سه شنبه 25 مرداد 1390, 10:56 صبح
سلام


خب اینا رو گذاشتن چون استفاده از تگهای HTML بخاطر پیچیدگی کنترل اونها خطرناکه.

فقط از نظر HTML خطرناک نباشه!

در رابطه با طرز کار bbcode موافق ، ولی خطرناک بودن منظورتون چی بود؟؟؟ :متفکر:

idocsidocs
سه شنبه 25 مرداد 1390, 11:24 صبح
خب اینا رو گذاشتن چون استفاده از تگهای HTML بخاطر پیچیدگی کنترل اونها خطرناکه.
ولی BBCode یه چیزی هست که فانکشنالیتی چندانی نداره و توسط مرورگر شناسایی و اجرا نمیشه و بنابراین شما میتونید با خیال راحت باهاش کار کنید.
یعنی بسادگی وقتی مثلا رشته [b] رو توی متن پیدا کردید اون رو با تگ <b> جایگزین میکنید.
استاندارد BBCode هم صرفا برای این بوده که اینطور نرم افزارها مثل نرم افزارهای فروم همه از یک نوع شناسه برای این علامتها استفاده کنن و کدهای اونها با هم سازگار و قابل انتقال باشه از یک نرم افزار به نرم افزار دیگه. وگرنه میشه مثلا یه نرم افزار دیگه از چیزی مثل #b# یا --b-- بجای [b] استفاده کنه. هرچیزی میشه. فقط از نظر HTML خطرناک نباشه!
ما توی ادیتورها هرکاری هم که بکنیم بالاخره باید به کاراکترهای > و < اجازه بدیم که به درستی برای مروگر ارسال بشن و این می تونه خطرناک باشه و به راحتی باعث xss بشه.
برای این مورد باید چیکار کنیم؟

idocsidocs
پنج شنبه 03 شهریور 1390, 13:10 عصر
لطفا در این مورد بیشتر توضیح بدید.

amin1softco
پنج شنبه 03 شهریور 1390, 16:28 عصر
عزیزان خوده tinymce یک plugin داره برای اینکار که خروجیش bbcode باشه
http://www.tinymce.com/wiki.php/Plugin:bbcode
بعدش میتنید با html_strip یا با htmlawed گزینه safe=>1 روفعال کنید تا مطمئن بشید تگ html وارد نشده
و یا طرف سرور با http://www.christian-seiler.de/projekte/php/bbcode/index_en.html می تونید کدش رو تبدیل کنید.

HamidTatalo
پنج شنبه 03 شهریور 1390, 16:48 عصر
یه لیست از بهترین ادیتورها
http://www.webresourcesdepot.com/category/goodies/wysiwyg-html-edit/
http://www.queness.com/post/212/10-jquery-and-non-jquery-javascript-rich-text-editors
http://free-php-editor.com/wysiwyg_html_editors.php

idocsidocs
پنج شنبه 03 شهریور 1390, 17:15 عصر
عزیزان خوده tinymce یک plugin داره برای اینکار که خروجیش bbcode باشه
http://www.tinymce.com/wiki.php/Plugin:bbcode
بعدش میتنید با html_strip یا با htmlawed گزینه safe=>1 روفعال کنید تا مطمئن بشید تگ html وارد نشده
و یا طرف سرور با http://www.christian-seiler.de/projekte/php/bbcode/index_en.html می تونید کدش رو تبدیل کنید.
وقتی این پلاگین رو فعال می کنیم 2 تا مکشل ایجاد می شه.

1- این پلاگین روی همه تگها (تگهایی مثل اسپن، آبجکت و ...) تاثیر نمی ذاره و این تگها به شکل html هستن.

2- اگر کاربر کاراکتری مثل [ یا ] اینم ادیتور این کاراکترها رو تبدیل نمی کنه و ما توی سرور با مشکل مواجه می شیم.

چه راهی برای حل این دو مشکل وجود داره؟

amin1softco
پنج شنبه 03 شهریور 1390, 17:20 عصر
خوب راهشو نوشتم دیگه با strip_tags کدهای زائد رو حذف کن یا با htmlawed یا با آخریه.......

idocsidocs
پنج شنبه 03 شهریور 1390, 18:35 عصر
خوب راهشو نوشتم دیگه با strip_tags کدهای زائد رو حذف کن یا با htmlawed یا با آخریه.......
نه متوجه نشدید.

من کدهای bbcode رو قرار دادم. الان ادیتور فقط بعضی از تگها رو به حالت bbcode تبدیل می کنه و بعضی از تگها رو بهحالت bbcode تبدیل نمی کنه.

اگه من از strip_tags استفاده کنم، تگهایی که ادیتور تولید کردهحذف می شه.

امیدوارم منظورم رو رسونده باشم.

amin1softco
پنج شنبه 03 شهریور 1390, 19:23 عصر
والا من تست کردم تگهایی که بوسیله ادیتور تولیدمی شه حذف نمی شه ... نمی دونم حتماً فقط برای من درست کار میده!!!!!!!!!!!!!!!!!!!!!!!!!!!

idocsidocs
پنج شنبه 03 شهریور 1390, 19:30 عصر
والا من تست کردم تگهایی که بوسیله ادیتور تولیدمی شه حذف نمی شه ... نمی دونم حتماً فقط برای من درست کار میده!!!!!!!!!!!!!!!!!!!!!!!!!!!
اگر امکانش هست کدهای مربوط به bbcode رو که توی تابع tinyMCE.init استفاده می کنید رو اینجا قرار بدید.

من وقتی یه فایل mp3 توی ادیتور قرار می دم، تگهای html به bbcode تبدیل نمی شن. شما همین کار رو انجام بدید و نتیجه رو بهم بگید.

amin1softco
پنج شنبه 03 شهریور 1390, 19:52 عصر
:متعجب: ببینید قرار نیست هرچیزی که شما می نویسید به bbcode تبدیل بشه شما در پنل مدیریت , cms می تونید این تگ ها رو تعریف کنید مثلاً برای ویبالتین کلش اینجاست (https://www.vbulletin.com/forum/misc.php?do=bbcode) به نظر من راحتترین کار برای شما اینه که برید html رو در انجمنتون فعال کنید بعد خروجیه tinymce رو با htmlawed با گزینه safe=>1 امن کنید تا مورد حملات xss قرار نگیرید


tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",
plugins : "bbcode",
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image, forecolor,styleselect,removeformat,cleanup,code",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_buttons4 :"",
theme_advanced_toolbar_location : "bottom",
theme_advanced_toolbar_align : "center",
theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
content_css : "bbcode.css",
entity_encoding : "raw",
add_unload_trigger : false,
remove_linebreaks : false
});

البته امکاناتش خیلی محدود شده ....

idocsidocs
جمعه 04 شهریور 1390, 14:47 عصر
:متعجب: ببینید قرار نیست هرچیزی که شما می نویسید به bbcode تبدیل بشه شما در پنل مدیریت , cms می تونید این تگ ها رو تعریف کنید مثلاً برای ویبالتین کلش اینجاست (https://www.vbulletin.com/forum/misc.php?do=bbcode) به نظر من راحتترین کار برای شما اینه که برید html رو در انجمنتون فعال کنید بعد خروجیه tinymce رو با htmlawed با گزینه safe=>1 امن کنید تا مورد حملات xss قرار نگیرید


tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",
plugins : "bbcode",
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image, forecolor,styleselect,removeformat,cleanup,code",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_buttons4 :"",
theme_advanced_toolbar_location : "bottom",
theme_advanced_toolbar_align : "center",
theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
content_css : "bbcode.css",
entity_encoding : "raw",
add_unload_trigger : false,
remove_linebreaks : false
});

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

خب اگر نمی شه همه تگها رو تبدیل کرد، چرا باید خودمون رو گول بزنیم که از bbcode استفاده کردیم ؟

فرض کنید ما به این نوع bbcode که شما می گید اعتماد کنیم، حالا اگه کاربر جاوا اسکریپت رو غیرفعال کنه، ادیتورش هم غیر فعال می شه و تگها به bbcode تبدیل نمی شن.

در این صورت هیچ تبدیلی انجام نمی شه و ما باید به این کدها اعتماد کنیم و اونها رو توی وبلاگمون نمایش بدیم. حالا اگه این کدها شامل تگ اسکریپت و کدهای مخرب باشن، خودمون باعث هک شدن سایتی که نوشتیم می شیم !

در این مورد چه نظری دارید؟

amin1softco
جمعه 04 شهریور 1390, 14:51 عصر
ای خدا .................................................. ..
عزیز دلم htmlawed طرف سرور کدهای ارسالی رو چک می کنه ؟!؟ شما خروجیی که از editor می گیری رو میدی به این ماژول اونم برات امنش می کنه دیگه حالا هر چی می خواهد باشه!؟

idocsidocs
شنبه 05 شهریور 1390, 12:07 عصر
ای خدا .................................................. ..
عزیز دلم htmlawed طرف سرور کدهای ارسالی رو چک می کنه ؟!؟ شما خروجیی که از editor می گیری رو میدی به این ماژول اونم برات امنش می کنه دیگه حالا هر چی می خواهد باشه!؟

می شه بگید از کجا می تونم ماژول htmlawed رو دانلود کنم؟

A B C D
شنبه 05 شهریور 1390, 12:25 عصر
اینو (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=1320327&viewfull=1#post1320327) ببین.
ضمنا اگر اجازهء HTML رو بدی کاربر میتونه هر تگی منجمله تگ img و table و غیره درج کنه و حتی تگهایی که در امکانات ادیتور شما وجود ندارن میتونن به سایت شما ارسال بشن. احتمالا نمیخوای بعضی تگها رو درج کنه، یا میخوای فقط تگهای خاصی رو اجازه بدی، یا میخوای فقط تگهایی رو که در امکانات ادیتور تعریف شدن اجازه بدی. اونوقته که باید لیست سیاه یا سفید هم بهش بدی.
البته توضیح و مثال از روش استفاده با لیست سفید و سیاه در همون پست هست.

ضمنا درسته htmLawed تا جاییکه دیدم خوب کار میکنه و خطر امنیتی نیست، ولی BBCode بهرحال یه چیز دیگس و برای حال و آینده اطمینان بیشتری بهش هست چون اساسا همه چیز تحت کنترله و توسط خودمون تعریف و ساخته میشه. اما چون خودم با BBCode کار نکردم و نمیدونم چه ماجول یا کدی میخواد و آموزشی براش ندارم نمیتونم بگم از HTML استفاده نکن. فکر میکنم واسه ما همون htmLawed فعلا کار رو راه میندازه.

idocsidocs
جمعه 11 شهریور 1390, 07:21 صبح
اینو (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=1320327&viewfull=1#post1320327) ببین.
ضمنا اگر اجازهء HTML رو بدی کاربر میتونه هر تگی منجمله تگ img و table و غیره درج کنه و حتی تگهایی که در امکانات ادیتور شما وجود ندارن میتونن به سایت شما ارسال بشن. احتمالا نمیخوای بعضی تگها رو درج کنه، یا میخوای فقط تگهای خاصی رو اجازه بدی، یا میخوای فقط تگهایی رو که در امکانات ادیتور تعریف شدن اجازه بدی. اونوقته که باید لیست سیاه یا سفید هم بهش بدی.
البته توضیح و مثال از روش استفاده با لیست سفید و سیاه در همون پست هست.

ضمنا درسته htmLawed تا جاییکه دیدم خوب کار میکنه و خطر امنیتی نیست، ولی BBCode بهرحال یه چیز دیگس و برای حال و آینده اطمینان بیشتری بهش هست چون اساسا همه چیز تحت کنترله و توسط خودمون تعریف و ساخته میشه. اما چون خودم با BBCode کار نکردم و نمیدونم چه ماجول یا کدی میخواد و آموزشی براش ندارم نمیتونم بگم از HTML استفاده نکن. فکر میکنم واسه ما همون htmLawed فعلا کار رو راه میندازه.
بنظرتون بهتر نیست بجای استفاده از htmLawed که لیست تگهای مجاز توی ادیتور خودمون رو پیدا کنیم و فقط به این لیست اجاره استفاده بدیم؟ ایسن اسکریپت به نظر کامل می رسه ولی باید به طور کامل بررسی بشه تا مطمئن شد.

البته این روش به شرطی خوبه که هکر نتونه کدهای مخربش رو بین <کد مخرب> قرار بد!

A B C D
جمعه 11 شهریور 1390, 09:36 صبح
بنظرتون بهتر نیست بجای استفاده از htmLawed که لیست تگهای مجاز توی ادیتور خودمون رو پیدا کنیم و فقط به این لیست اجاره استفاده بدیم؟ ایسن اسکریپت به نظر کامل می رسه ولی باید به طور کامل بررسی بشه تا مطمئن شد.تگهای مجاز رو بصورت لیست سفید به htmLawed بدید.
شما نمیتونید خودتون به این راحتی ورودی HTML کاربر رو امن کنید. فقط تگ نیست، از هزار و یک راه و حتی بعضی باگهای مرورگرها حمله صورت میگیره.
روی htmLawed کار شده و برنامهء مفصلی هست که تمام این موارد رو جمع آوری و تست و پیاده سازی کرده. تازه بازم میگم کلا امن کردن HTML با تضمین 100% تقریبا ممکن نیست و فقط وقتی مجبور بودید ازش استفاده کنید. مثلا آیا وقتی یه باگ در نسخهء جدیدی از IE بوجود آمد، htmLawed شما اگر آپدیت نشده باشه میتونه جلوش رو بگیره؟

بنظر بنده راه حل امن تر استفاده از BBCode است. البته استفاده از BBCode به این معنی نیست که ظرایف امنیتی خودش رو نداره یا نباید ورودی رو از نظرهای دیگه مثل وجود کدهای HTML امن کنید (احتمالا کاربرد htmlspecialchars قبل از تبدیل BBCode ها به HTML کفایت میکنه)

idocsidocs
جمعه 11 شهریور 1390, 14:34 عصر
تگهای مجاز رو بصورت لیست سفید به htmLawed بدید.
شما نمیتونید خودتون به این راحتی ورودی HTML کاربر رو امن کنید. فقط تگ نیست، از هزار و یک راه و حتی بعضی باگهای مرورگرها حمله صورت میگیره.
روی htmLawed کار شده و برنامهء مفصلی هست که تمام این موارد رو جمع آوری و تست و پیاده سازی کرده. تازه بازم میگم کلا امن کردن HTML با تضمین 100% تقریبا ممکن نیست و فقط وقتی مجبور بودید ازش استفاده کنید. مثلا آیا وقتی یه باگ در نسخهء جدیدی از IE بوجود آمد، htmLawed شما اگر آپدیت نشده باشه میتونه جلوش رو بگیره؟

بنظر بنده راه حل امن تر استفاده از BBCode است. البته استفاده از BBCode به این معنی نیست که ظرایف امنیتی خودش رو نداره یا نباید ورودی رو از نظرهای دیگه مثل وجود کدهای HTML امن کنید (احتمالا کاربرد htmlspecialchars قبل از تبدیل BBCode ها به HTML کفایت میکنه)
نظرتون در مورد این کلاس (http://htmlpurifier.org/comparison)چیه؟
http://htmlpurifier.org/comparison

ظاهرا htmLawed قدیمی هست ولی htmlpurifier جدید تر و امن تر.

در مورد bbcode باید بگم که اگر بخوایم bbcode رو روی همه تگها فعال کنیم، متن موجود توی ادیتور به هم می ریزه و کاربرهای نا آشنا به برنامه نویسی وب ممکنه از این حالت خوششون نیاد.

این امکان وجود داره که از bbcode استفاده کنیم بطوریکه توی محیط ادیتور تصاویر و استایل سایر تگها به هم نریزن و نمایش داده بشن؟

A B C D
جمعه 11 شهریور 1390, 16:40 عصر
نظرتون در مورد این کلاس (http://htmlpurifier.org/comparison)چیه؟
http://htmlpurifier.org/comparison

ظاهرا htmLawed قدیمی هست ولی htmlpurifier جدید تر و امن تر.

بله بنظرم همینطوره.
اون صفحه رو کامل خوندم و یه چند صفحهء دیگه دربارهء htmlpurifier.
البته htmlpurifier رو قبلا مطرح کرده بودن، ولی اون موقع چون یه مثال سرراست و معتبر از روش استفادش پیدا نکردم اون رو توصیه نکردم چون نمیدونستم چه تنظیماتی میخواد یا نمیخواد و تا چه حد برای کارهای امنیتی درنظر گرفته شده و امنیت داره. فکر میکردم احتمالا نیاز به تنظیمات دستی زیادی داشته باشه تا امن بشه.
اما الان دیدم انتهای صفحهء دانلودش (http://htmlpurifier.org/download#Installation) مثال هم زده که تست کردم و ظاهرا کار مورد نظر ما رو به همین سادگی انجام میده.
پس بیایید از این ببعد همه با هم از htmlpurifier استفاده کنیم :لبخند:

راستی مثال استفاده:

<?php

header("Content-type: text/plain; charset=utf-8");

$contents="<script>alert(1);</script><img src='t.jpg' onload='alert(2);'><form></form>";

require_once 'htmlpurifier-4.3.0/library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
$purifier = new HTMLPurifier($config);

echo $purifier->purify($contents);

?>
این مثال با فرض این هست که انکدینگ صفحهء شما UTF-8 است و doctype صفحه هم از نوع HTML 4.01 Transitional. اگر انکدینگ یا doctype دیگری دارید، باید تنظیمات مربوطه رو انجام بدید.

البته فکر نمیکنم استفاده از htmLawed هم واقعا اونقدرها بد یا خطرناک باشه، ولی وقتی بهتر از اون هست چرا استفاده نکنیم؟
اینو گفتم که اونایی که از htmLawed استفاده کردن حالا شوکه نشن فکر نکنن به این خاطر هک شدن یا میشن.
یک مزیت htmLawed رو میتونیم کم حجم تر و سبک تر بودنش بدونیم. اما بهرحال در مسائل امنیتی حجم و سنگین بودن هزینهء زیادی برای پرداختن نیست.

تاجاییکه در اون صفحه خوندم دو ایراد امنیتی اصلی به htmLawed گرفته:
- یکی اینکه گفته چنین برنامه هایی باید با تنظیمات پیشفرض امن باشن (درحالیکه در htmLawed نیاز هست گزینهء safe رو تنظیم کنید تا امن بشه)، چون خیلی کاربران مستندات رو نمیخونن و ممکنه در این زمینه اشتباه کنن.
- دیگه اینکه میگه htmLawed حتی درحالت امن اجازهء وجود فرم ها رو در خروجی میده که نباید اینطور باشه.

بنظر بنده در هر دو مورد حق با طرفه!
البته در مورد تگ form هم میتونیم با دادن یک لیست سیاه به htmLawed مشکل رو برطرف کنیم، ولی بنظر بنده هم نباید این تگ رو درحالت امن اجازه میداد. بالاخره کاربر که حرفه ای نیست و داره به این تنظیم اعتماد میکنه و فکر میکنه به هیچ شکل نمیشه هیچ سوء استفاده ای ازش کرد.

درمورد امنیت درمقابل XSS هم طرف گفته «احتمالا». پس نمیشه گفت htmLawed درمقابل XSS ناامنه.

بقیهء ایرادهایی هم که گرفته بنظرم از نوع امنیتی نیست و به استاندارد بودن خروجی مربوط میشن.

در نهایتش منکه برای سویچ به htmlpurifier کاملا قانع شدم.


این امکان وجود داره که از bbcode استفاده کنیم بطوریکه توی محیط ادیتور تصاویر و استایل سایر تگها به هم نریزن و نمایش داده بشن؟ نمیدونم.
این دیگه کار شماست که تحقیق کنید و بفهمید.

idocsidocs
جمعه 11 شهریور 1390, 19:26 عصر
بله بنظرم همینطوره.
اون صفحه رو کامل خوندم و یه چند صفحهء دیگه دربارهء htmlpurifier.
البته htmlpurifier رو قبلا مطرح کرده بودن، ولی اون موقع چون یه مثال سرراست و معتبر از روش استفادش پیدا نکردم اون رو توصیه نکردم چون نمیدونستم چه تنظیماتی میخواد یا نمیخواد و تا چه حد برای کارهای امنیتی درنظر گرفته شده و امنیت داره. فکر میکردم احتمالا نیاز به تنظیمات دستی زیادی داشته باشه تا امن بشه.
اما الان دیدم انتهای صفحهء دانلودش (http://htmlpurifier.org/download#Installation) مثال هم زده که تست کردم و ظاهرا کار مورد نظر ما رو به همین سادگی انجام میده.
پس بیایید از این ببعد همه با هم از htmlpurifier استفاده کنیم :لبخند:

راستی مثال استفاده:

<?php

header("Content-type: text/plain; charset=utf-8");

$contents="<script>alert(1);</script><img src='t.jpg' onload='alert(2);'><form></form>";

require_once 'htmlpurifier-4.3.0/library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
$purifier = new HTMLPurifier($config);

echo $purifier->purify($contents);

?>
این مثال با فرض این هست که انکدینگ صفحهء شما UTF-8 است و doctype صفحه هم از نوع HTML 4.01 Transitional. اگر انکدینگ یا doctype دیگری دارید، باید تنظیمات مربوطه رو انجام بدید.

البته فکر نمیکنم استفاده از htmLawed هم واقعا اونقدرها بد یا خطرناک باشه، ولی وقتی بهتر از اون هست چرا استفاده نکنیم؟
اینو گفتم که اونایی که از htmLawed استفاده کردن حالا شوکه نشن فکر نکنن به این خاطر هک شدن یا میشن.
یک مزیت htmLawed رو میتونیم کم حجم تر و سبک تر بودنش بدونیم. اما بهرحال در مسائل امنیتی حجم و سنگین بودن هزینهء زیادی برای پرداختن نیست.

تاجاییکه در اون صفحه خوندم دو ایراد امنیتی اصلی به htmLawed گرفته:
- یکی اینکه گفته چنین برنامه هایی باید با تنظیمات پیشفرض امن باشن (درحالیکه در htmLawed نیاز هست گزینهء safe رو تنظیم کنید تا امن بشه)، چون خیلی کاربران مستندات رو نمیخونن و ممکنه در این زمینه اشتباه کنن.
- دیگه اینکه میگه htmLawed حتی درحالت امن اجازهء وجود فرم ها رو در خروجی میده که نباید اینطور باشه.

بنظر بنده در هر دو مورد حق با طرفه!
البته در مورد تگ form هم میتونیم با دادن یک لیست سیاه به htmLawed مشکل رو برطرف کنیم، ولی بنظر بنده هم نباید این تگ رو درحالت امن اجازه میداد. بالاخره کاربر که حرفه ای نیست و داره به این تنظیم اعتماد میکنه و فکر میکنه به هیچ شکل نمیشه هیچ سوء استفاده ای ازش کرد.

درمورد امنیت درمقابل XSS هم طرف گفته «احتمالا». پس نمیشه گفت htmLawed درمقابل XSS ناامنه.

بقیهء ایرادهایی هم که گرفته بنظرم از نوع امنیتی نیست و به استاندارد بودن خروجی مربوط میشن.

در نهایتش منکه برای سویچ به htmlpurifier کاملا قانع شدم.

نمیدونم.
این دیگه کار شماست که تحقیق کنید و بفهمید.
قبلا بحث کردیم که htmLawed با فیلتر کردن تگهای embed-object و ... جلوی استفاده از فایلهای تصویری و صوتی رو می گیره.
ایا htmlpurifier هم در مورد فایلهای صوتی و تصویری همین رفتار رو داره یا اینکه با امن کردن تگهای مورد نیاز، به کاربر اجازه استفاده از فایلهای صوتی و تصویر رو می ده؟

A B C D
جمعه 11 شهریور 1390, 19:34 عصر
htmlpurifier هم این تگها رو حذف میکنه. بنظرم چون بصورت کلی نمیشه امنشون کرد.
مثلا تگ Object اگر اجازه داده بشه و طرف بتونه فلش بذاره، اون فلش میتونه کارهای غیرمجاز و خطرناک بکنه و کسی هم نمیتونه جلوش رو بگیره و اصلا در سمت سرور نمیشه فهمید که چکار میکنه که حتی بخواد بلاک بشه یا نشه.
بخاطر همین وقتی فلش میذارید باید مطمئن باشید از منبع مطمئنی مثل یوتیوب هست و فقط یه ویدئوپلیر بی خطره (و احتمالا حتی اینکه دیتای ویدئویی هم که توش پخش میشه قبلا از فیلترهای امنیتی یوتیوب رد شده).

اون روشی که در منبعی که معرفی کردم آمده اینطور هست که بجای تگهای یوتیوب میاد و یک تگ و رشتهء جایگزین میذاره و بعد از فیلتر کردن با htmlpurifier میاد و اون رشته ها رو دوباره با تگهای Object و Embed با پارامترهای مورد نیاز و البته بی خطر جایگزین میکنه.
درواقع برای این هدف htmlpurifier هیچ کاری انجام نمیده و تمام مراحل رو خودمون انجام میدیم.

idocsidocs
جمعه 11 شهریور 1390, 19:52 عصر
htmlpurifier هم این تگها رو حذف میکنه. بنظرم چون بصورت کلی نمیشه امنشون کرد.
مثلا تگ Object اگر اجازه داده بشه و طرف بتونه فلش بذاره، اون فلش میتونه کارهای غیرمجاز و خطرناک بکنه و کسی هم نمیتونه جلوش رو بگیره و اصلا در سمت سرور نمیشه فهمید که چکار میکنه که حتی بخواد بلاک بشه یا نشه.
بخاطر همین وقتی فلش میذارید باید مطمئن باشید از منبع مطمئنی مثل یوتیوب هست و فقط یه ویدئوپلیر بی خطره (و احتمالا حتی اینکه دیتای ویدئویی هم که توش پخش میشه قبلا از فیلترهای امنیتی یوتیوب رد شده).

اون روشی که در منبعی که معرفی کردم آمده اینطور هست که بجای تگهای یوتیوب میاد و یک تگ و رشتهء جایگزین میذاره و بعد از فیلتر کردن با htmlpurifier میاد و اون رشته ها رو دوباره با تگهای Object و Embed با پارامترهای مورد نیاز و البته بی خطر جایگزین میکنه.
درواقع برای این هدف htmlpurifier هیچ کاری انجام نمیده و تمام مراحل رو خودمون انجام میدیم.
اگر بشه این امکان رو بوجود بیاریم که مدیر سایت بتونه چندتا سایت مورد اطمینان رو مشخص کنه می شه این مشکل رو هم برطرف کرد.