برگزیده های پرشین تولز

بهترین راه جلوگیری از حملات XSS

behnamy

Registered User
تاریخ عضویت
16 می 2013
نوشته‌ها
675
لایک‌ها
463
محل سکونت
At my Gray(!) hat World
سلام دوستان، راستش خیلی وقته دیگه آنچنان به انجمن سر نمیزنم، قبلا روزی حدود 400 پست اینجا مـیخوندم و این قضیه هر روز و هر روز تکرار میشد و اینجا پاتـوق همیشگیم بود، ولی این روزا دیگه مشغلـه اجازه نمیده. ایمـیل های انجـمن رو fiiilter کردم توی فولدر جداگانه، الان نگاه کردم دیدم 12192 ایـمیل انجمن رو نخوندم! حدود 4000 اطلـاعیه رو نخوندم و...
ولی امروز اتفاقی دیدم آقا محمد توی تاپیک قدیمی من پستی گذاشته بودن که خیلی خوشحال شدم از دیدن ایشون و فرصتی شد دوباره بیام انجمن.
پ.ن: تبریگ آقا محمد، من نمیدونستم همکار بخش شدی، به سلامتی انشالـله :android13:
تاپیـک این بود: http://forum.persiantools.com/threads/★★★★-تاپیک-جامع-سورس-کدهای-php.647252/#post-11740470

خب میخوام توی این تاپیک نظرم رو در رابطه با پست آقا محمد بگم چون همونظور که مشخصه اون تاپیک فقط واسه اشتراک کدهای شما دوستان عزیز هستش نه نظر و بحث، و میخوام واسه جلوگـیری از حملات XSS یه آموزش کوچولو بدم که شاید بدرد بقیه بخوره.

خلاصه بخوام عرض کنم، واسه جلوگیـری از XSS هیچ تابع پیش فرض php وجود نداره، و سعی کنید تا جای ممکن از روش های استاندارد و توصیه شده استفاده کنید واسه مباحث امنیتی، از مدل رمـزنگاری گرفته تا جلوگیری از حملاتی مثل XSS
ساختار HTML بیش از اونکه شما فکر کنید پیچیده اس و امکان نفوذ رو از طرق متعدد و پیچیده ای به نفوذگر میده پس سعی کنید تاجای ممکن از روش های ابداعی استفاده نکنید. برای پاکسازی HTML توصیه میکنم حتما از برنامه های مفصل و حرفه ای مخصوص این کارها، مثل برنامه htmlpurifier استفاده کنید، من که به شخصه بهتر از این ندیدم و به غیر از استفاده از اینجور کتابخونه ها به سختی بشه جلوی همه مدل حملات XSS رو گرفت! اینم سایتش: http://htmlpurifier.org

این یه مثال استفاده از htmlpurifier هستش، با این فرض که انکدینگ صفحه شما UTF-8 است و doctype صفحه هم از نوع HTML 4.01 Transitional. اگر انکدینگ یا doctype دیگری دارید، باید تنظیمات مربوطه رو انجام بدید.
PHP:
<?php
require_once 'htmlpurifier-4.7.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);



$purified_content = $purifier->purify($your_content);
 
بالا