соль, общая для всей базы(хранить где-нибудь в конфиге приложения, чтоб при доступе к базе её было не найти) и какая-нибудь для пользователя
Таким образом исключается возможность перебирать пароли по словарю.
MD5 на сегодняшний день не является крипотостойкой хеш функцией
Из IDE в один голос советуют VS,
Ну, и скрипт, выполняющийся на этой странице, их может прочесть.
Не говоря уже о том, что куки передаются в заголовке каждого запроса - а вы, помнится, боялись пароль открытым текстом гонять. Шило на мыло.