Про безопасность

Пара советов по обеспечению безопасности вашей установки Вебасиста.

1. Изменение адреса бекенда (по умолчанию /webasyst/).
Делается это очень просто: в файле wa-config/config.php добавлением строки:

'backend_url' => 'admin',
// тогда бекенд будет открываться по адресу /admin/

'admin' можно заменить на что угодно.

Можно даже сделать URL входа в бекенд динамическим. Например, так:

'backend_url' => 'admin'.date('d'),

date('d') возвращает число месяца, например, 8 июня эта функция вернёт 08. Таким орбазом адрес бекенда будет /admin08/

2. Изменение функции генерации хеша паролей пользователей.
Фреймворк не хранит пароли пользователей в открытом виде. Хранится только хеш. Для совместимости с другими системами и прежними версиями скриптов WebAsyst по умолчанию в качестве функции хеша используется md5($password).

На современных GPU можно достаточно быстро перебирать пароли md5, а это значит, что если у вас каким-то образом будут украдены хеши паролей пользователей, то многие хеши могут быть расшифрованы (http://habrahabr.ru/post/145454/).

Начиная с версии фреймворка 1.0.8 появилась возможность задать свою функцию хеша от пароля. Для этого нужно в файле wa-config/SystemConfig.class.php в конце добавить объявление функции wa_password_hash().

Например, так:

function wa_password_hash($password)
{
    return md5(sha1("S!aL:T1%(#".$password)."_s+A=lT,2?*");
}

Строки S!aL:T1% и _s+A=lT,2?* принято называть «солью». При редактировании функции задайте ваши собственные значения этим строкам. Добавление «соли» делает хеши более устойчивыми к расшифровке (брутфорсу).

ВАЖНО: После смены функции хеша вам нужно будет установить новые пароли для пользователей: каждому пользователю бекенда нужно будет пройти стандартную процедуру восстановлением пароля («забыли пароль?»). Так что лучше всего обновленную функцию задавать тогда, когда в вашей системе еще мало пользователей. Рекомендуется сохранить код функции wa_password_hash() в надёжном месте на случай, если вы потеряете доступ к коду, и вам нужно будет перенести базу данных на другой сервер.

Есть пожелания или вопросы по улучшению безопасности? Пожалуйста, пишите комментарии.