1.Храните пароли исключительно в захешированном виде. 2.Для хеширования оптимально применять MD5. Он работает медленее чем DES, что увеличивает время, необходимое на раскрытие исходной строки. 3.Захешировав пароль 2-3 раза подряд, вы значительно усложните жизнь взломщику. 4.Принудительное увеличение длины пароля (например, путем приписывания к исходному паролю ещё одной псевдослучайной строки) создаст дополнительные сложности при переборе. Конечно, если дополнительная строка не станет известна взломщику.
5.Проверяйте введённый пароль на сложность. Оптимальный вариант - 7 - 12 символов букв различных регистров и цифр. Мало кто сможет дождаться окончания перебора, а таблицы есть ещё далеко не для всех строк. 6.Защититься от тупого перебора через веб интерфейс просто - достаточно блокировать аккаунт на 3 секунды после каждого ввода пароля. Взломщик сможет перебирать не более 20 строк в минуту. 7.На время сессии, запускайте контроль IP. Рекомендация устаревшая, но сколько разработчиков уже прокололось на этом. 8.А если пользователь и взломщик пришли через один прокси? Надо считать ещё и контрольную сумму для строки USER_AGENT. И сравнивать при каждом действии в защищенной зоне сайта. Простой и нехитрый прием, который отгоняет 80% взломщиков. 9.Галочку "запомнить меня" делайте только в крайнем случае. Какой бы не была надежной защита в скриптах - клиенты уязвимы и могут выдать свою конфиденциальную информацию вместе с куками. 10.Внимательно ознакомтесь с документацией по адресу http://ha.ckers.org/xss.html. И не допускайте такого! Хотя, не так то это и просто. XSS и немного СИ могут выманивать пароли не хуже, чем взлом БД.