محتوای آموزشی وبلاگ نتآرام
فرض کنید میخواهید خواننده بتواند بنویسد «ممنون، مشکلم حل شد»، ولی نتواند در نظرش قالب HTML قرار دهد. پنهان کردن راهنمای HTML زیر فرم کافی نیست؛ چون کسی میتواند درخواست را بدون آن فرم هم بفرستد. تغییر باید در مرحلهای انجام شود که وردپرس متن نظر را دریافت میکند.
مثال: نظر باید فقط متن ساده باشد
نمونهٔ PHP این مقاله، برچسبهای HTML را از متن دیدگاه تازه برمیدارد. آن را در افزونهٔ کوچک اختصاصی یا روش معتبر درج کد سایت نگه دارید؛ ویرایش مستقیم فایلهای هستهٔ وردپرس با بهروزرسانی از بین میرود. برای آزمایش، با نقش بازدیدکننده یک دیدگاه دارای متن و یک برچسب سادهٔ HTML بفرستید و نتیجهٔ ذخیره و نمایش را ببینید.
این کد دیدگاههای قدیمی را دوباره نمینویسد و مانع همهٔ اسپمها هم نمیشود. اگر دیدگاه آزمایشی در صف تأیید قرار گرفت، ابتدا آن را در مدیریت ببینید؛ دیده نشدن فوری در صفحه به معنی خراب بودن کد نیست. بعد از بررسی، همان دیدگاه آزمایشی را حذف کنید.

انتخاب رفتار مورد انتظار
قبل از کدنویسی، مشخص کنید کاربر باید بتواند نشانی یک منبع را در متن بنویسد یا خیر. حذف تگ a میتواند قالب لینک را بردارد، اما متن URL همچنان در نظر باقی میماند و بعضی قالبها آن را دوباره به لینک قابل کلیک تبدیل میکنند. سیاست متن ساده را با رفتار واقعی قالب هماهنگ کنید.
برای سایت آموزشی که کاربران کد مینویسند، حذف تگها ممکن است بخشی از نمونهٔ کد را از بین ببرد. در چنین سایتی، نمایش ایمن کد با قالب مشخص مناسبتر از حذف بیقید همهٔ نشانههاست. هدف این نمونه، دیدگاه متنی معمولی است؛ پیش از اجرای آن، چند نظر واقعی را بهعنوان نمونه بررسی کنید.
محل اضافه کردن تغییر
کد را در افزونهٔ اختصاصی کوچک یا محل قابل نگهداری قالب فرزند قرار دهید. فایلهای هسته مانند wp-includes/kses.php را ویرایش نکنید؛ تغییر هسته با بهروزرسانی از بین میرود و نگهداری را دشوار میکند. در فایل PHP موجود، یک برچسب باز PHP اضافی وارد نکنید. نسخهٔ پیشین فایل و راه غیرفعال کردن تغییر را نگه دارید.
نمونهٔ پایین از فیلتر محتوای دیدگاه استفاده میکند و برچسبهای HTML را از محتوای تازه در مسیر استاندارد برمیدارد. آن را ابتدا روی نسخهٔ آزمایشی اجرا کنید. اگر افزونهٔ شما دیدگاه را با مسیر ذخیرهسازی اختصاصی میسازد، باید بررسی کنید این فیلتر در آن مسیر نیز اجرا میشود.
آزمون با چند متن متفاوت
یک دیدگاه فارسی معمولی، یک متن شامل نقلقول و یک نمونهٔ HTML ساده بفرستید. نتیجه را در صف تأیید و بعد در صفحهٔ عمومی ببینید. کاراکترهای فارسی، خط جدید و علامت نقلقول نباید خراب شوند. همچنین پیغام کنار فرم که برچسبهای مجاز را معرفی میکند، باید با سیاست جدید هماهنگ باشد.
کد قدیمی این مقاله هنگام تبدیل محتوا نقلقولهای خراب داشت و برای کپی مستقیم مناسب نبود؛ نمونهٔ معتبر پایین جای آن را میگیرد. اضافه کردن همزمان نمونهٔ قدیمی و تازه لازم نیست و ممکن است محتوا را چند بار تبدیل کند.
دیدگاههای ثبتشده چه میشوند؟
این تغییر، دادهٔ قبلی را از پایگاه داده پاک نمیکند. اگر میخواهید سیاست تازه را روی نظرات گذشته اعمال کنید، ابتدا نمونه، بکاپ و روش برگشت مشخص کنید. پاکسازی گروهی ممکن است اطلاعات مفید را از بین ببرد. ظاهر یک نظر قبلی را با مسیر ثبت نظر تازه یکی ندانید.
در پایان، ارسال واقعی را با نقش بازدیدکننده امتحان کنید و دیدگاه آزمایشی را حذف کنید. فقط پنهان کردن دکمهها یا راهنمای HTML با CSS، محتوای درخواست ارسالی را محدود نمیکند.
فرمانهای نمونهٔ این آموزش
فرمانهای زیر مربوط به مراحل توضیحدادهشدهاند. پیش از اجرا، نام حساب و مسیر نمونه را با اطلاعات خودتان جایگزین کنید. فرمانهای مدیریتی را مدیر سرور اجرا میکند.
کد / دستورadd_filter( 'pre_comment_content', function ( $content ) {
return wp_strip_all_tags( $content );
} );
منابع و ادامهٔ مطالعه
مقاله قبلی
اقدامهای ضروری پس از هک شدن وردپرس
۱ مرداد ۱۳۹۴مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
