В настоящее время самой большой проблемой безопасности является внедрение SQL-кода, которое является существенным недостатком в текущем сценарии. Любой может войти в систему без каких-либо учетных данных с помощью сценария, который вы опубликовали. Измените эту строку:
$username = $_POST['username'];
выглядеть так:
$username = mysql_real_escape_string($_POST['username']);
Что касается файлов cookie, сеансы используют файлы cookie, поэтому вы уже используете их. Во-вторых, все, что вы помещаете в cookie, передается по проводам, поэтому они не защищены.
Другие меры безопасности, которые были бы хорошими, - это использовать bcrypt или хотя бы вариант sha2 вместо md5 для хеширования паролей.
Также желательно хешировать пароли с использованием javascript перед их отправкой по сети, это очень важно, если вы не используете SSL.
Это поможет вам начать. После того, как вы позаботитесь об этих проблемах, вы можете перейти к атакам CSRF и захвату сессий.