حل مشکل هک وردپرس و جوملا , ریدایرکت و باز کردن اتوماتیک لینکهای خارجی
یکی از رایج ترین هک هایی که اخیرا بیشتر شده و نابود کننده سئوی سایت شما هستند و هم در cms هایی مثل وردپرس و جوملا زیاد دیده میشه و هم در سایتهایی با ساختارهای دیگر , اینه که وقتی سایت را باز میکنید یک صفحه در تب جدید یا همان تب باز می شود و به یک سایت خارجی ریدایرکت می شود و اعتبار سایت شما را به خودشان انتقال داده و بازدید رایگان بدست می آورند و همزمان اعتبار و سئوی سایت شما را نابود میکنند.
این هک علاوه بر آسیب به اعتبار و رضایت کاربران شما و همچنین سئوی سایت شما مشکلات بیشتری نیز فراهم میکند . مثلا اگر سایت شما به این هک آلوده شود تبلیغات گوگل شما متوقف می شود و تا زمان درست شدن سایت نمی توانید از خدمات google adwords استفاده کنید .
من دو راهکار برای رفع این مشکل آماده کردم .
1 : راهکار اساسی رفع مشکل که کمی سخت و زمان بر است .
بررسی و پاکسازی سایت
ابتدا باید سایت را از هرگونه کد مخرب پاکسازی کنید:
بکاپ گیری: ابتدا از سایت خود بکاپ بگیرید.
ویروس یابی : اگر هاست ویروس اسکنر دارد با آن سایت را اسکن و پاکسازی کنید .
سپس وارد مدیریت سایت شوید و اگر ریدایرکت اجازه نمی دهد چندین بار امتحان کنید و به محض لود صفحه لاگین دکمه esc لپ تاپ را بزنید تا از لود فایل ویروس جلوگیری کنید . وقتی وارد پنل مدیریت شدید در وردپرس از پلاگینهای امنیتی مانند Wordfence، Sucuri یا iThemes Security برای اسکن و پاکسازی سایت استفاده کنید و در جوملا از rs-firewall استفاده کنید .
بروز رسانی
نسخه سی ام اس خود با تمامی افزونه ها و قالب ها را آپدیت کنید .
اسکن دستی :
اگر همچنان ریدایرکت وجود داشت باید سایت را باز کنید . با مرورگر inspect بگیرید و در قسمت تک فایلهای js لود شده را از طریق مسیرش پیدا کنید با فایل js اصلی آن جایگزین کنید . مثلا فایل مربوط به یک افزونه است افزونه سالم را دانلود کنید و فایل مورد نظر را با فایل درون هاست جایگزین کنید .
مطابق این تصویر :
همچنین می توانید کل سایت را دانلود کنید و با notepad++ و گزینه search in files تمام پوشه را دنبال آدرس سایت خارجی که اتوماتیک باز می شود بگردید و فایل آلوده را پیدا و جایگزین کنید.
2 : راه حل موقت و سریع
در این راه حل ما فایل آلوده را از بین نمیبریم اما جلوی عملکرد آن را میگیریم . برای سایتهای وردپرسی :
کد زیر را در فایل function.php پوسته قرار دهید :
این کد، لینکهای خارجی را شناسایی کرده و جلوی کلیک شدن آنها را میگیرد:
function disable_external_links($content) {
$content = preg_replace_callback(
'/<a\s[^>]*href=["\'](http[^"\']+)["\'][^>]*>/i',
function($matches) {
$url = $matches[1];
$internal = strpos($url, home_url()) === 0;
if (!$internal) {
// لینکهای خارجی را تغییر دهید تا عمل نکنند
return str_replace('<a', '<a class="external-link-disabled" onclick="return false;"', $matches[0]);
}
return $matches[0];
},
$content
);
return $content;
}
add_filter('the_content', 'disable_external_links');
و این کد را در style.css قالب قرار دهید .
.external-link-disabled {
pointer-events: none;
color: red; /* میتوانید رنگ را به دلخواه تغییر دهید */
}
و این کد را در قالب در تگ head قرار دهید .
<script>
document.addEventListener('DOMContentLoaded', function() {
const links = document.querySelectorAll('a');
links.forEach(link => {
if (link.hostname !== window.location.hostname) {
link.addEventListener('click', function(event) {
event.preventDefault();
});
}
});
});
</script>
اگر همچنان در رفع مشکل ایراد داشتید با ما تماس بگیرید .