Beans html ماژول ها نام پی اچ پی. Jdoc:include - روشی برای نمایش محتوا در صفحه. اضافه کردن اسلش های ساده

به طور خلاصه به موضوع روش های نمایش محتوا در بدنه قالب پرداخته ایم. حالا بیایید نگاهی دقیق‌تر به این کنیم که چه چیزی است و با چه چیزی خورده می‌شود. بنابراین، اعلامیه های روش jdoc در هر قالب جوملا وجود دارد و این یا آن اطلاعات را در بدنه قالب (یعنی در صفحه سایت) نمایش دهید. به طور کلی، اعلان متد به شکل زیر است:

این خط اطلاعات اجزای سایت را نمایش می دهد، به عنوان مثال مقالاتی از com_content. نوع عناصر خروجی در ویژگی مشخص شده است.

1. نوع - انواع عناصر خروجی.

  • جزء- همانطور که در بالا نوشتم، محتوای اصلی صفحه را نمایش می دهد. فقط یک بار در هر قالب می توان تماس گرفت.
  • سر- همچنین یک بار پس از تگ افتتاحیه اعلام می شود . برای نمایش سبک ها، اسکریپت ها، و ابرداده صفحه فعلی</li><li><i>پیام</i><i>- </i>پیام های سیستم را نمایش می دهد. یک بار در متن سند اعلام شده است.</li><li><i>نصب و راه اندازی</i>- چیزی را نمایش نمی دهد و یک "دستورالعمل" برای نصب است.</li><li><i>مدول -</i>یک ماژول واحد را در صفحه نمایش می دهد. تعداد تبلیغات نامحدود می باشد.</li><li><i>ماژول ها</i>- بر خلاف نوع قبلی، به شما امکان می دهد بیش از یک تعداد واحد را در موقعیت خود نمایش دهید.</li> </ul><p>برای چهار نوع اول لیست شده، فقط باید آنها را در صفحه نشان دهید. در مورد نوع ماژول، کار کمی پیچیده تر می شود. برای نمایش یک ماژول در صفحه ابتدا باید یک ماژول برای آن ایجاد کنیم <b>موقعیت مدولار</b>با یک شناسه منحصر به فرد (نام موقعیت ماژول). این کار با استفاده از ویژگی name = "position name" و اضافه کردن اجباری خط انجام می شود:</p><p> <position>نام موقعیت</position>به فایل templateDetails.xml. با توصیف نام موقعیت در templateDetails.xml، آن را در سیستم تعیین می کنیم و در مدیر ماژول می بینیم. نام موقعیت ها می تواند دلخواه باشد، اگرچه نام = موقعیت "user3" به طور پیش فرض برای نمایش منوی بالا استفاده می شود.</p><p><b>2. سبک - شرح سبک خروجی (mod chrome).</b></p> <p>ظاهر و ساختار پوسته ماژول به سبک مشخص شده بستگی دارد. به نظر می رسد</p><p> :<jdoc:include type="modules" name="user1" style="xhtml" />به طور پیش فرض، چندین سبک خروجی ماژول وجود دارد:</p><ul><li><i>xhtml -</i>ماژول را در یک بلوک با تابع عنوان modChrome_xhtml ($module، &$params، &$attribs) نمایش می‌دهد. <br>{<br>if (! خالی ($module->content)) : ?> <br> <div class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"> <br> <?php if ($module->عنوان نمایش != 0) : ?> <br> <h3><?php echo $module->عنوان؛ ?></h3><br> <?php endif; ?><br> <?php echo $module->محتوا؛ ?> <br> </div><br> <?php endif;<br>}</li><li><i>جدول -</i>ماژول را در طرح بندی ساختار جدول نمایش می دهد <br>تابع modChrome_table ($module، &$params، &$attribs) <br>{ ?><br> <table cellpadding="0" cellspacing="0" class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"> <br> <?php if ($module->عنوان نمایش != 0) : ?> <br> <tr><br> <th><br> <?php echo $module->عنوان؛ ?> <br> </th><br> </tr><br> <?php endif; ?><br> <tr><br> <td><br> <?php echo $module->محتوا؛ ?> <br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>هرز -</i>محتویات یک ماژول را در یک سلول جدول نمایش می دهد، تابع افقی modChrome_horz ($module، &$params، &$attribs) <br>{ ?><br> <table cellspacing="1" cellpadding="0" width="100%"><br> <tr><br> <td><br> <?php modChrome_table($module, $params, $attribs); ?><br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>گرد شده</i>- ماژول را در چندین بلوک تودرتو برای یک ظاهر طراحی پیچیده به شکل حاشیه های گرافیکی (به عنوان مثال گوشه های گرد) تابع modChrome_rounded ($module، &$params، &$attribs) نمایش می دهد. <br>{ ?><br> <div class="module<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"> <br> <div><br> <div><br> <div><br> <?php if ($module->عنوان نمایش != 0) : ?> <br> <h3><?php echo $module->عنوان؛ ?></h3><br> <?php endif; ?><br> <?php echo $module->محتوا؛ ?> <br> </div><br> </div><br> </div><br> </div><br> <?php<br>}</li><li><i>طرح کلی</i>- سبک های css از پیش تعیین شده را به تابع بلوک ماژول modChrome_outline اضافه می کند ($module، &$params، &$attribs) <br>{<br>static $css=false; <br>اگر (!$css) <br> {<br>$css=true; <br>jimport("joomla.environment.browser"); <br>$doc = JFactory::getDocument(); <br>$browser = JBrowser::getInstance(); <br>$doc->addStyleDeclaration(".mod-preview-info ( padding: 2px 4px 2px 4px; حاشیه: 1px سیاه و سفید کامل؛ موقعیت: مطلق؛ پس زمینه رنگ: سفید؛ رنگ: قرمز؛)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper ( background-color:#eee; حاشیه: 1px مشکی نقطه‌دار؛ رنگ:#700;)"); <br>if ($browser->getBrowser()=="msie") <br> {<br>if ($browser->getMajor()<= 7) {<br>$doc->addStyleDeclaration(".mod-preview-info (filter: alpha(opacity=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (فیلتر: alpha(opacity=50);)"); <br> } <br>دیگر( <br>$doc->addStyleDeclaration(".mod-preview-info (-ms-filter: alpha(opacity=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (-ms-filter: alpha(opacity=50);)"); <br> } <br> } <br>دیگر <br> {<br>$doc->addStyleDeclaration(".mod-preview-info (opacity: 0.8;)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (opacity: 0.5;)"); <br> } <br> } <br> ?><br> <div class="mod-preview"><br> <div class="mod-preview-info"><?php echo $module->موقعیت."[".$module->style."]"; ?></div><br> <div class="mod-preview-wrapper"><br> <?php echo $module->محتوا؛ ?> <br> </div><br> </div><br> <?php<br>}</li><li><i>هیچ یک</i>- شبیه به سبک اصلا مشخص نشده است. ماژول بدون طراحی و تابع عنوان modChrome_none ($module، &$params، &$attribs) را نمایش می‌دهد. <br>{<br>echo $module->content; <br>}</li> </ul><p>همه سبک های از پیش تعیین شده در فایل templates/system/html/modules.php قرار دارند. اما ما محدود به استفاده از گزینه های ارائه شده نیستیم، بلکه کاملاً قادر به ایجاد گزینه های خود هستیم.</p> <p><b>3. یک حالت کروم سفارشی ایجاد کنید.</b></p> <p><b><br></b>بنابراین، انواع نمایش ماژول پیش‌فرض ارائه شده الزامات فعلی را برآورده نمی‌کنند. شما باید سبک طراحی خود را اضافه کنید. به عنوان مثال، بیایید یک موقعیت نسبتاً تکراری را انتخاب کنیم. طبق تکلیف به جای <h3>عنوان ماژول را در تگ قرار دهید <span>، که از نظر معنایی خنثی است. همچنین باید بلوک محتوای ماژول را در یک قسمت جداگانه قرار دهید <div>. برای ایجاد سبک خروجی ماژول خود، از ابزارهای استاندارد استفاده خواهیم کرد. اکثر قالب های جوملا دارای یک پوشه html/ (قالب ها/نام قالب/html/) هستند که به اصطلاح برای قالب بندی استفاده می شود. یعنی اگر یک قالب ماژول را در این پوشه کپی کنید، به جای قالب از پوشه modules/my_module/tmpl/default، فایلی از templates/name template/html/my_modules/default خروجی می شود. کامپوننت ها به همین صورت قالب بندی می شوند. راحت و کاربردی. در پوشه html/ قالب خود، یک فایل modules.php ایجاد کنید. اگر چنین پوشه ای در قالب وجود نداشته باشد، آن را ایجاد می کنیم. بیایید آن را در یک فایل بنویسیم</p><p> <?php<br>تابع modChrome_modbox ($module، &$params، &$attribs) // فراخوانی تابع <br>{<br>if (!empty ($module->content)) : /* بررسی کنید که آیا موقعیت دارای یک ماژول فعال است */?> <br> <div class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); /* پسوند css کلاس ماژول */ ?>"> را نمایش می دهد <br> <?php if ($module->showtitle != 0): /* بررسی کنید که آیا عنوان ماژول گنجانده شده است */ ?> <br> <span class="title"><?php echo $module->عنوان؛ /* عنوان */ ?> را چاپ کنید</span><br> <?php endif; ?><br> <div class="modcontent"><br> <?php echo $module->محتوا؛ /* خروجی محتویات ماژول */ ?> <br> </div><br> </div><br> <?php endif;<br>} <br>?> انجام شد. اکنون فقط باید آن را به عنوان سبک خروجی مشخص کنید. <jdoc:include type="modules" name="user1" style="modbox"/>ما یک ماژول را به موقعیت خود اختصاص می دهیم و به نتیجه نگاه می کنیم.</p> <p>یکی از نکات مهم در مورد PHP نحوه کار با فرم های HTML است. نکته اصلی در اینجا این است که هر عنصر فرم به طور خودکار در دسترس برنامه های PHP شما قرار می گیرد. برای اطلاعات دقیق در مورد استفاده از فرم ها در PHP، بخش را مطالعه کنید. در اینجا یک نمونه فرم HTML آمده است:</p> <p><b>مثال شماره 1 ساده ترین فرم HTML</b></p> <p><form action="action.php" method="post"> <p>اسم شما: <input type="text" name="name" /></p> <p>سن شما: <input type="text" name="age" /></p> <p><input type="submit" /></p> </form></p> <p>هیچ چیز خاصی در مورد این فرم وجود ندارد. این یک فرم معمولی HTML بدون هیچ برچسب خاصی است. هنگامی که کاربر فرم را پر می کند و دکمه ارسال را کلیک می کند، صفحه action.php فراخوانی می شود. این فایل ممکن است چیزی شبیه به:</p> <p><b>مثال شماره 2 نمایش داده های فرم</b></p> <p>سلام،<?php echo htmlspecialchars ($_POST [ "name" ]); ?> .<br>برای تو<?php echo (int) $_POST [ "age" ]; ?>سال ها.</p> <p>نمونه خروجی این برنامه:</p> <p>سلام سرگئی شما 30 ساله هستید.</p> <p>اگر قطعات کد با را در نظر نگیرید <span>htmlspecialchars()</span>و <i>(int)</i>، اصل عملکرد این کد باید ساده و قابل درک باشد. <span>htmlspecialchars()</span>اطمینان حاصل می کند که کاراکترهای "ویژه" HTML به درستی کدگذاری شده اند تا HTML یا جاوا اسکریپت مخرب در صفحه شما درج نشود. فیلد سنی که می دانیم باید یک عدد باشد، به سادگی می توانیم آن را تبدیل کنیم <span>عدد صحیح</span>، که به طور خودکار از شر شخصیت های ناخواسته خلاص می شود. PHP همچنین می تواند این کار را به صورت خودکار با استفاده از پسوند فیلتر انجام دهد. متغیرهای $_POST["name"] و $_POST["age"] به طور خودکار توسط PHP برای شما تنظیم می شوند. قبلاً از متغیر superglobal $_SERVER استفاده می‌کردیم، اما در اینجا از متغیر superglobal $_POST نیز استفاده می‌کردیم که شامل تمام داده‌های POST است. توجه کنید که <i>روش ارسال</i>(روش) فرم ما POST است. اگر از روش استفاده می کردیم <i>گرفتن</i>، سپس اطلاعات فرم ما در متغیر superglobal $_GET خواهد بود. یا اگر منبع داده مهم نیست، می توانید از متغیر $_REQUEST استفاده کنید. این متغیر حاوی ترکیبی از داده های GET، POST، COOKIE است.</p> <p><b>15 سال پیش</b></p> <p>طبق مشخصات HTTP، زمانی که از فرم برای تغییر وضعیت چیزی در انتهای سرور استفاده می‌کنید، باید از روش POST استفاده کنید. برای مثال، اگر صفحه‌ای دارای فرمی است که به کاربران اجازه می‌دهد نظرات خود را اضافه کنند، مانند این. در این صفحه، فرم باید از POST استفاده کند. اگر روی صفحه‌ای که از طریق POST به آن دسترسی پیدا کرده‌اید روی «بارگذاری مجدد» یا «بازخوانی» کلیک کنید، تقریباً همیشه یک خطا رخ می‌دهد -- شما نباید یک نظر را دو بار پست کنید -- به همین دلیل است که این صفحات بوکمارک یا کش نیستند.</p><p>زمانی باید از روش GET استفاده کنید که فرم شما چیزی را از سرور خارج می کند و در واقع چیزی را تغییر نمی دهد. به عنوان مثال، فرم یک موتور جستجو باید از GET استفاده کند، زیرا جستجو در یک وب سایت نباید چیزی را که مشتری ممکن است به آن اهمیت می دهد تغییر دهد، و نشانک گذاری یا ذخیره نتایج جستجوی موتور جستجو به همان اندازه مفید است که نشانک گذاری یا ذخیره سازی حافظه پنهان مفید است. یک صفحه HTML ایستا</p> <p><b>2 سال پیش</b></p> <p>شایان توضیح است:</p><p>POST امن تر از GET نیست.</p><p>دلایل انتخاب GET در مقابل POST شامل عوامل مختلفی مانند هدف درخواست (آیا اطلاعات را «ارسال می‌کنید؟»)، اندازه درخواست (محدودیت‌هایی برای مدت زمان URL وجود دارد، و پارامترهای GET ارسال می‌شوند. URL)، و به راحتی می‌خواهید Action قابل اشتراک‌گذاری باشد -- به عنوان مثال، جستجوهای Google GET هستند زیرا کپی کردن و اشتراک‌گذاری عبارت جستجو را با شخص دیگری به سادگی با اشتراک‌گذاری URL آسان می‌کند.</p><p>امنیت تنها در اینجا مورد توجه قرار می گیرد زیرا GET به اشتراک گذاری آسان تر از POST است. مثال: شما نمی خواهید رمز عبور توسط GET ارسال شود، زیرا ممکن است کاربر URL حاصل را به اشتراک بگذارد و سهواً رمز عبور خود را فاش کند.</p><p>با این حال، اگر از TLS/SSL برای محافظت از خود اتصال شبکه استفاده نکنید، یک GET و یک POST به یک اندازه توسط یک فرد مخرب با موقعیت مناسب قابل رهگیری هستند.</p><p>همه فرم‌های ارسال شده از طریق HTTP (معمولاً پورت 80) ناامن هستند و امروزه (2017) دلایل خوبی برای استفاده نکردن یک وب‌سایت عمومی از HTTPS (که اساساً امنیت لایه انتقال HTTP + است) وجود ندارد.</p><p>به عنوان یک امتیاز، اگر از TLS استفاده می‌کنید، خطر دریافت کد (AD) به ترافیک شما را که توسط شما وارد نشده است را به حداقل می‌رسانید.</p> <p>این یک آسیب پذیری رایج کلاس PHP-including است. اما شخصی که حسابرسی را برای او انجام دادم به من گفت که این آسیب پذیری قابل سوء استفاده نیست، بنابراین به حساب نمی آید. مجبور شدم با او دعوا کنم</p> <h2>PHP-include چیست</h2> <p>بیایید یک برنامه آموزشی کوچک در مورد این آسیب پذیری اجرا کنیم. PHP-include یک آسیب‌پذیری است که به شما امکان می‌دهد یک فایل دلخواه، برای مثال این کد را «شامل» کنید:</p> <p>$module=$_REQUEST["module"]; include("modules/".$module);</p> <p>و از آنجایی که معمولاً هیچ تگ PHP در فایل "/etc/passwd" وجود ندارد (<?php и?>، سپس در مرورگر نمایش داده می شود، همانطور که کد html در پشت تگ های php در یک اسکریپت معمولی php نمایش داده می شود. البته خواندن فایل ها تنها یکی از پیاده سازی های احتمالی این حمله است. نکته اصلی گنجاندن فایل های لازم با کد PHP لازم است.</p> <p>بیایید به مثال برگردیم. بیایید آن را پیچیده کنیم:</p> <p>$module=$_REQUEST["module"]; include("modules/".$module."/module.class.php");</p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p>$module = $_REQUEST [ "module" ] ;</p><p>شامل ("modules/" . $module . "/module.class.php" ) ;</p> </td> </tr></table><p>همانطور که می بینید، اکنون یک خط در انتها به متغیر ما اضافه می شود که ما را از گنجاندن هر فایلی باز می دارد. بنابراین، بسیاری از توابع PHP ایمن باینری نیستند، یعنی چنین توابعی یک بایت NULL را انتهای یک رشته در نظر می گیرند. ما به این اسکریپت دسترسی پیدا می کنیم:</p> <p>script.php?module=../../../../../../../../../../../etc/passwd%00</p> <p>و اگر دستور magic_quotes غیرفعال باشد، دوباره محتویات /etc/passwd را خواهیم دید.</p> <h2>آیا آسیب پذیری وجود دارد؟</h2> <p>بیایید به کد خود بازگردیم:</p> <p>$module=addslashes($_REQUEST["module"]); include("modules/".$module."/module.class.php");</p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p>$module = اسلش ($_REQUEST [ "module" ] );</p><p>شامل ("modules/" . $module . "/module.class.php" ) ;</p> </td> </tr></table><p>همانطور که می بینید، متغیر ما مجبور است از طریق "addslashes" عبور کند و اگر بخواهیم از یک بایت NULL استفاده کنیم، به "\0" تبدیل می شود و inclusion کار نمی کند.</p> <p>اما پیشرفت متوقف نمی شود! به نظر می رسد که برخی از بچه ها از USH یک ویژگی جالب در PHP پیدا کردند: بردارهای حمله سیستم فایل PHP (انگلیسی). برای خلاصه کردن خلاصه مقاله، php مسیرها را با استفاده از چندین ویژگی پردازش می کند:</p> <ul><li><b>برش مسیر</b>- php رشته مسیر را به طول مشخص شده MAXPATHLEN کوتاه می کند (در ویندوز تا 270 کاراکتر، در NIX - معمولاً 4096، در BSD - معمولاً 1024)</li> <li><b>عادی سازی مسیر</b>- php مسیر را به روشی خاص پردازش می کند و کاراکترهای اضافی "/" و "/" را حذف می کند. و ترکیبات مختلف آنها</li> <li><b>کاهش به شکل متعارف</b>- انتقال های غیر ضروری حذف می شوند، به عنوان مثال، "dir1/dir2/../dir3" به "dir1/dir3/" تبدیل می شود در حالی که وجود دایرکتوری "dir2" بررسی نمی شود، و سایر تبدیل های مشابه (یعنی ادامه عادی سازی )</li> </ul><p>حال به ترتیب مسیر عبور شده چه می شود:</p> <ol><li>اگر مسیر نسبی باشد، ابتدا مقادیر از دستورالعمل include_path جایگزین می شوند</li> <li>سپس مسیر بسته به سکو به طول معینی بریده می شود</li> <li>مسیر در حال عادی سازی است</li> <li>مسیر به شکل متعارف کاهش می یابد</li> </ol><p>حالا بیایید سعی کنیم از این استفاده کنیم. بیایید سعی کنیم یک فایل خاص "test.php" را که در فهرست "modules/" قرار دارد، اضافه کنیم. برای انجام این کار، علامت "/." را به انتها اضافه کنید. به طوری که طول کل، همراه با نام فایل و مقدار از include_path، آشکارا بیشتر از 4096 کاراکتر است. <br>script.php?module=test.php/././.[...]/././.</p> <p>در این مورد، شما باید حدس بزنید تا کل رشته مسیر (از قبل بریده شده) با یک نقطه (مهم!) به پایان برسد، نه با یک اسلش. برای انجام این کار، می توانید یک اسلش مانند زیر اضافه کنید: <br></p> <p>و یکی از این گزینه ها قطعا کار خواهد کرد.</p> <h2>در حال تجزیه و تحلیل</h2> <p>بیایید به ترتیب نگاه کنیم که چه دگرگونی هایی در مسیر اتفاق می افتد <br>modules/test.php//././.[...]/./././module.class.php <br><i>4200 کاراکتر</i> </p> <p>اولین چیزی که برای خط اتفاق می افتد این است که مقدار include_path به آن اضافه می شود: <br>/home/site/public_html/modules/test.php//././.[...]/./././module.class.php <br><i>4223 کاراکتر</i> </p> <p>سپس رشته به MAXPATHLEN کوتاه می شود (مثلاً 4096): <br>/home/site/public_html/modules/test.php//././.[...]/./. <br><i>4096 کاراکتر</i> </p> <p>در اینجا می توانید ببینید که چرا باید یک اسلش دیگر اضافه شود (در غیر این صورت خط به اسلش قطع می شد). اکنون این خط عادی شده است، ابتدا اسلش های اضافی را حذف کنید: <br>/home/site/public_html/modules/test.php/././.[...]/./. <br><i>4095 کاراکتر</i> </p> <p>در نتیجه مسیر صحیح فایل مورد نیاز را دریافت می کنیم و این مسیر قبلاً به include منتقل می شود و فایل مورد نیاز ما در آن قرار می گیرد.</p> <p>یعنی به این ترتیب فایل "test.php" خود را با موفقیت درج خواهیم کرد. <br>script.php?module=test.php//././.[...]/././.</p> <p>این به این معنی است که آسیب پذیری تئوری نیست. در نتیجه مشتری من شرط را باخت و من برنده شرط و 10 روبلی که روی آن شرط بندی کردیم. البته علاوه بر 10 روبل، اعتماد و احترام را نیز در نظر مشتری جلب کردم که این نیز مهم است.</p> <h2>یادداشت</h2> <p>در اینجا من به چند ویژگی جالب بهره برداری از این آسیب پذیری نگاه خواهم کرد.</p> <h3>خروج از دایرکتوری</h3> <p>این کد را در نظر بگیرید:</p> <p> ) ; </p> <p>بیایید از این نکته بگذریم که می توانید از RFI استفاده کنید و یک فایل از یک سرور راه دور اضافه کنید. بیایید بگوییم "allow_url_include=OFF" در سرور.</p> <p>بیایید شرایطی را در نظر بگیریم که باید یک فایل از دایرکتوری زیر اضافه کنیم: <br>script.php?module=../test.php/././.[...]/././.</p> <p>چنین درخواستی خطایی مانند فایل پیدا نشد ایجاد می کند. و برای دور زدن این موضوع، باید آن را اینگونه صدا کنیم: <br>script.php?module=blabla/../../test.php/././.[...]/././.</p> <p>بیهوده نبود که تقدیس راه ها را شرح دادم. به لطف آن، دایرکتوری "blabla" لازم نیست وجود داشته باشد.</p> <h3>اضافه کردن اسلش های ساده</h3> <p>احتمالاً یک خواننده با دقت متوجه شده است که در توضیح عادی سازی نوشتم که اسلش های اضافی «/» و نقطه هایی با اسلش «/» حذف شده اند، بنابراین چرا فقط از اسلش استفاده نکنید تا از دردسرهای غیرضروری با نقطه پایانی در پایان جلوگیری کنید.</p> <p>همه چیز در مورد الگوریتم ها است، یعنی یک اسلش با نقطه "/." به طور کامل حذف می شود. اما با اسلش‌های ساده، وضعیت کمی پیچیده‌تر است؛ در هنگام عادی‌سازی، هر دو اسلش با یک اسلش جایگزین می‌شود تا زمانی که فقط یک اسلش (!) باقی بماند، به عنوان مثال:</p><p>/home/site/public_html/modules/test.php/////////////////// <br><i>57 کاراکتر</i> <br> ↓<br>/home/site/public_html/modules/test.php///////// <br><i>48 کاراکتر</i> <br> ↓<br>/home/site/public_html/modules/test.php///// <br><i>44 کاراکتر</i> <br> ↓<br>/home/site/public_html/modules/test.php/// <br><i>42 کاراکتر</i> <br> ↓<br>/home/site/public_html/modules/test.php// <br><i>41 کاراکتر</i> <br> ↓<br>/home/site/public_html/modules/test.php/ <br><i>40 کاراکتر</i> </p> <h3><b>یک انحراف کوچک:</b></h3> <p>علاوه بر این، اگر به بسیاری از منابع هک محبوب توجه کنید، متوجه این خطا خواهید شد. همانطور که متوجه شدم، این خطا با مقاله ای توسط Raz0r خاصی شروع شد که در آن او یک بردار را پیشنهاد کرد: <br>index.php?act=../../../../../etc/passwd/////[…]/////</p> <p>و حتی به مجله توجه کنید ][aker این اشتباه را در مقاله خود تکرار کرده است. علاوه بر این، حتی در مقاله اصلی USH به وضوح نوشته شده بود که استفاده از اسلش ها توصیه نمی شود و لازم است قبل از عادی سازی یک کاراکتر نقطه در انتها باقی بماند. اما اسلش های ساده (حتی بدون نقطه در انتها) فقط در PHP با Suhosin کار می کنند.</p> <p>یعنی از اسلش با نقطه "/" استفاده کنید. - یک روش جهانی تر، زیرا، بر خلاف اسلش های "/"، برای همه نسخه های php کار می کند.</p> <h2>نتیجه</h2> <p>امیدوارم این مقاله به شما کمک کند درک کنید که نباید حتی کوچکترین آسیب پذیری را در اسکریپت های خود باقی بگذارید، زیرا دیر یا زود می توانید بردار حمله خود را برای آنها ایجاد کنید که می تواند منجر به عواقب جدی شود.</p> <p>عنصر em قسمتی از متن را با تاکید نشان می دهد. می توانید از آن برای جلب توجه خواننده به معنای جمله یا پاراگراف استفاده کنید. من به شما می گویم که این بعد از , که عنصر em را توصیف می کند به چه معناست.</p><blockquote><b>جدول 8-6:</b>عنصر em</blockquote><blockquote><b>شکل 8-3:</b>با استفاده از عنصر em</blockquote><p>در این مثال، من بر روی I (I) در ابتدای جمله تأکید کردم. اگر به عنصر em فکر کنیم، وقتی جمله ای را با صدای بلند می گوییم، این واقعیت را در نظر می گیریم که جمله پاسخ به یک سؤال است. به عنوان مثال، تصور کنید که من پرسیدم: "چه کسی سیب و پرتقال دوست دارد؟" پاسخ شما این خواهد بود: "من سیب و پرتقال دوست دارم." (وقتی این را با صدای بلند می گویید و روی من تاکید می کنید، مشخص می کنید که فردی هستید که این میوه ها را دوست دارید).</p><p>اما اگر بپرسم: "آیا سیب دوست داری و چه چیز دیگری؟" می توانید پاسخ دهید: "من سیب و پرتقال دوست دارم." در این مورد، تاکید بر کلمه آخر خواهد بود، تاکید بر اینکه پرتقال یکی دیگر از میوه های مورد علاقه شماست. این گزینه در HTML به شکل زیر است:</p><p>من سیب دوست دارم و <b><em> </b>پرتقال ها <b></em> </b>.</p><h3>تعریف واژه های خارجی و اصطلاحات فنی</h3><p>عنصر i بیانگر قطعه ای از متن است که ماهیت متفاوتی با محتوای اطراف دارد. این یک تعریف نسبتا مبهم است، اما مثال‌های رایج شامل کلماتی از زبان‌های دیگر، اصطلاحات فنی یا علمی، و حتی افکار انسانی (بر خلاف گفتار) است. عنصر i توضیح داده شده است.</p><blockquote><b>جدول 8-7:</b>عنصر I</blockquote><blockquote><b>شکل 8-5:</b>با استفاده از عنصر s</blockquote><br><img src='https://i2.wp.com/storage.smarly.net/html5/8.5.png' width="100%" loading=lazy loading=lazy><h3>شناسایی متن مهم</h3><p>عنصر قوی بیانگر قسمتی از متن است که مهم است. این عنصر در شرح داده شده است.</p><blockquote><b>جدول 8-9:</b>عنصر قوی</blockquote><blockquote><b>شکل 8-7:</b>با استفاده از عنصر u</blockquote><br><img src='https://i1.wp.com/storage.smarly.net/html5/8.7.png' width="100%" loading=lazy loading=lazy><h3>اضافه کردن فونت کوچک</h3><p>عنصر کوچک نشان دهنده فونت کوچک است و اغلب برای صلاحیت ها و شفاف سازی ها استفاده می شود. B نشان دهنده عنصر کوچک است.</p><blockquote><b>جدول 8-11:</b>عنصر کوچک</blockquote><blockquote><b>شکل 8-8:</b>با استفاده از عنصر کوچک</blockquote><br><img src='https://i1.wp.com/storage.smarly.net/html5/8.8.png' width="100%" loading=lazy loading=lazy><h3>اضافه کردن یک زیرنویس و یک زیرنویس</h3><p>می توانید از عناصر sub و sup به ترتیب برای نشان دادن superscript و subscript استفاده کنید. برای نوشتن کلمات در برخی از زبان‌ها از حروف بزرگ استفاده می‌شود و در عبارات ساده ریاضی هم از بالانویس و هم زیرنویس استفاده می‌شود. این عناصر در</p><blockquote><b>جدول 8-12:</b>عناصر ساب و سوپ</blockquote><blockquote><b>شکل 8-9:</b>با استفاده از عناصر sub و sup</blockquote><br><img src='https://i1.wp.com/storage.smarly.net/html5/8.9.png' width="100%" loading=lazy loading=lazy> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> <div class="single-popular"> <div class="single-popular-tit col-lg-12">محبوب در دسته بندی:</div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/8e694afe297762af56fa10dc9d64eb9d.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="چگونه یک کلیپ کارائوکه در رایانه ایجاد کنیم؟"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">چگونه یک کلیپ کارائوکه در رایانه ایجاد کنیم؟</div> <a href="https://5visa.ru/fa/at/sozdanie-karaoke-svoimi-rukami-kak-sozdat-karaoke-klip-na-kompyutere-eto.html" rel="bookmark" title="چگونه یک کلیپ کارائوکه در رایانه ایجاد کنیم؟">خواندن</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/d610310bd3744add66d0b4be4dfee6a5.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="برنامه Origin برای بازی مورد نیاز است، اما نصب نیست. FIFA 16 به Origin نیاز دارد."/ loading=lazy loading=lazy> <div class="single-popular-item-tit">برنامه Origin برای بازی لازم است، اما نصب نیست فیفا...</div> <a href="https://5visa.ru/fa/multimedia/prilozhenie-origin-neobhodimo-dlya-igry-no-ono-ne-ustanovleno-prilozhenie-origin.html" rel="bookmark" title="برنامه Origin برای بازی مورد نیاز است، اما نصب نیست. FIFA 16 به Origin نیاز دارد.">خواندن</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/30ee436baf8151ff5b776ef4575c45ea.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="ثبت صفحه شخصی در شبکه اجتماعی فیسبوک"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">ثبت صفحه شخصی در شبکه اجتماعی فیسبوک</div> <a href="https://5visa.ru/fa/multimedia/zaregistrirovat-dve-stranicy-facebook-na-odin-nomer-registraciya-lichnoi.html" rel="bookmark" title="ثبت صفحه شخصی در شبکه اجتماعی فیسبوک">خواندن</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/f19ca0b3b94ccf60b634700168b060f2.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="نحوه اجرای یک اسکن Nmap ساده Nmap"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">نحوه اجرای یک اسکن Nmap ساده Nmap</div> <a href="https://5visa.ru/fa/installation-and-configuration/setevoi-skaner-nmap-i-ego-vozmozhnosti-kak-zapustit-prostoe-skanirovanie.html" rel="bookmark" title="نحوه اجرای یک اسکن Nmap ساده Nmap">خواندن</a> <div class="clr"> </div> </div> </div> <div class="clr"></div> </div> </div>  <div class="sidebar col-lg-3 col-md-4 col-sm-12"> <div class="sidebar-wrp"> <div class="sidebar-wrp-title">آخرین مقالات</div> <div class="sidebar-wrp-des"> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/934317c9dc463eca8a068c72103a9d1c.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">چگونه یک تصویر را چند درجه بچرخانیم ...</div> <div class="clr"></div> <a href="https://5visa.ru/fa/internet/kak-povernut-izobrazhenie-v-vorde-i-eshche-neskolko-priemov.html">خواندن</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/22b772bd41ea5a26bd659632075d8633.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">غیرفعال کردن تبلیغات در مرورگر Yandex کجا...</div> <div class="clr"></div> <a href="https://5visa.ru/fa/tips/kak-otklyuchit-blokirovku-reklamy-v-brauzere-yandeks-otklyuchenie-reklamy-v-yandeks.html">خواندن</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/fb321d5756cb0506f3cba53b24342950.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">عیب یابی مشکلات اتصال وای فای در...</div> <div class="clr"></div> <a href="https://5visa.ru/fa/problems/shlyuz-ustanovlennyi-po-umolchaniyu-ne-dostupen-ustranenie-problem-s-wi-fi.html">خواندن</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/adf1bbe784035fed9b433ebb2510db2f.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">تغییر رمز عبور در پروفایل ویندوز 10</div> <div class="clr"></div> <a href="https://5visa.ru/fa/education/pomenyat-parol-na-profile-vindovs-10.html">خواندن</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/a1f00d0e4dfd0c63b7073715f264f36a.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">دستورالعمل راه اندازی روترهای بی سیم ...</div> <div class="clr"></div> <a href="https://5visa.ru/fa/at/pravilnaya-nastroika-wi-fi-routera-asus-rt-g32-instrukciya-po-nastroike.html">خواندن</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/da305b0b628cd68b021f50a2fe2a3a89.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">نحوه انتخاب هارد دیسک و خرید کدام یک بهتر است...</div> <div class="clr"></div> <a href="https://5visa.ru/fa/multimedia/kakaya-skorost-zhestkogo-diska-horoshaya-kak-vybrat-zhestkii-disk-i.html">خواندن</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/470eb147f848e5af1fb8b95300372a3e.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Meizu برای آدمک. تماس ها و دفترچه آدرس ....</div> <div class="clr"></div> <a href="https://5visa.ru/fa/internet/meizu-dlya-chainikov-zvonki-i-adresnaya-kniga-storonnie-prilozheniya-dlya.html">خواندن</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/7a081806d1b8bf3a3ff61c21be94541f.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">برنامه PDFMaster را دانلود کنید</div> <div class="clr"></div> <a href="https://5visa.ru/fa/program/smotret-pdf-faily-skachat-programmu-pdfmaster.html">خواندن</a> </div> <div class="clr"></div> </div> </div> <div id="text-4" class="widget widget_text sidebar-wrp"> <div class="textwidget"> </div> </div> <div class="clr"></div> </div> </div> </div> </div> <div id="footer"> <div class="container"> <div class="row"> <div class="footer-contacts col-lg-6 col-md-6 col-sm-12 col-xs-12"> <img src="/public/logo.png" loading=lazy loading=lazy> <div class="footer-contacts-tit">5visa.ru <br>اینترنت. چند رسانه ای. ناوبر. تحصیلات. توسط. سیستم عامل. برنامه ها. مشاوره نصب و راه اندازی</div> <div class="footer-soc"> <div class="footer-soc-wrp"> <div class="soc_w"> <a href="https://vk.com/share.php?url=https://5visa.ru/education/bobovye-html-modules-php-name-jdoc-include---metod-otobrazheniya-kontenta-na-stranice.html" class="soc-link vk" target="_blank"></a> <a href="https://www.facebook.com/sharer/sharer.php?u=https://5visa.ru/education/bobovye-html-modules-php-name-jdoc-include---metod-otobrazheniya-kontenta-na-stranice.html" class="soc-link fb" target="_blank"></a> </div> </div> </div> </div> <div class="footer-links col-lg-4 col-md-6 col-sm-12 col-xs-12"> </div> <div class="footer-links col-lg-4 col-md-4 col-sm-4 col-xs-4" style="display: block;"> <ul> <li><a href="">نسخه پروژه</a></li> <li><a href="">تبلیغات در وب سایت</a></li> </ul> <ul> <li><a href="https://5visa.ru/fa/feedback.html">مخاطب</a></li> <li><a href="https://5visa.ru/fa/sitemap.xml">نقشه سایت</a></li> </ul> </div> </div> </div> <div class="copyright">© 2023 اینترنت. چند رسانه ای. ناوبر. تحصیلات. توسط. سیستم عامل. برنامه ها. مشاوره نصب و راه اندازی</div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script src="https://5visa.ru/wp-content/themes/trudinsp/js/bootstrap.min.js"></script> <script type="text/javascript" src="https://5visa.ru/wp-content/themes/trudinsp/js/SmoothScroll.js"></script> <a id="scroll-to-top" href="#" title="به بالا بروید">بالا</a> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.51.0-2014.06.20'></script> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/jquery-smooth-scroll/js/jss-script.min.js?ver=4.8.3'></script> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript' src='/wp-includes/js/jquery/ui/effect.min.js?ver=1.11.4'></script> <script type='text/javascript' src='/wp-includes/js/jquery/ui/effect-blind.min.js?ver=1.11.4'></script> <script type='text/javascript'> /* <![CDATA[ */ var stbUserOptions = { "mode":"css","cssOptions":{ "roundedCorners":false,"mbottom":20,"imgHide":"http:\/\/5visa.ru\/wp-content\/plugins\/wp-special-textboxes\/themes\/stb-metro\/minus.png","imgShow":"http:\/\/5visa.ru\/wp-content\/plugins\/wp-special-textboxes\/themes\/stb-metro\/plus.png","strHide":"\u0421\u043a\u0440\u044b\u0442\u044c","strShow":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c"} }; /* ]]> */ </script> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/wp-special-textboxes/js/wstb.min.js?ver=5.5.101'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.8.3'></script> <script type="text/javascript" id="slb_context">/* <![CDATA[ */if ( !!window.jQuery ) { (function($){ $(document).ready(function(){ if ( !!window.SLB ) { { $.extend(SLB, { "context":["public","user_guest"]} );} } })} )(jQuery);} /* ]]> */</script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html>