Всем привет!
Столкнулся с тем, что взломщики ходят подбирать пароли к админке толпами. Так как использую шаред хостинг, то особо тех поддержку не подёргаешь по поводу изменения конфига. По совету саппорта решил поставить jsecurelite. Поставил. По большому счёту это то, что нужно. Программа работает в двух вариантах: либо при входе запрашивает пароль, либо пароль надо указать в адресной строке для входа в админку. То есть, если пароль pwd, то в админку надо входить так: /administrator/index.php?pwd
Каждый раз вводить дважды логин пароль (один в jsecurelite, а второй в админку) мне не очень понравилось, а вот использовать пароль в адресной строке было неплохо.
Единственный нюанс, который меня не устроил, это то, что код jsecurelite устроен таким образом, чтобы вход в админку происходил только в виде /administrator/index.php?pwd
То есть все мои закладки в браузере на разные разделы сайта вида /administrator/index.php?option=com_content и /administrator/index.php?option=com_virtuemart перестали работать. Даже, если их видоизменить до /administrator/index.php?pwd&option=com_content то плагин jsecurelite не принимает пароль. Поэтому я немного доработал код jsecurelite, чтобы он принимал пароль внутри таких развёрнутых ссылок.
Теперь я поправил все свои закладки в браузере таким образом: /administrator/index.php?pwd&option=com_content и это работает.
Если вдруг вам нужно также, то нужно отредактировать файл /www/plugins/system/jsecurelite/jsecurelite/jsecurelite.class.php
Найдите функцию checkUrlKey и замените на следующий вариант:
function checkUrlKey($JSecureliteConfig){
if((preg_match("/administrator\/*index.?\.php$/i", $_SERVER['PHP_SELF']))) {
$qstrs = explode("&",$_SERVER['QUERY_STRING'],10);
foreach ($qstrs as $q) {
if ($JSecureliteConfig->key == md5(base64_encode($q))) return true;
}
$my =& JFactory::getUser();
if(!$my->id && $JSecureliteConfig->key != md5(base64_encode($_SERVER['QUERY_STRING']))) {
return false;
} else {
return true;
}
}
}