bom, para autenticar usuários, vc não usa nem um dos dois..
vc usa SESSION ou COOKIES pra armazenar informações durante a sessão (ou por mais tempo, no caso dos cookies)..
a situação é seguinte.. como o próprio nome diz, as Sessions vão guardar as informações apenas durante a sessão (entende-se por sessão, o período em q o usuário mantém o navegador aberto após o registro da sessão).. ou seja, se o usuário fecha o navegador, a sessão vai expirar, e todos os dados serão apagados.. nas sessions, os dados são salvos na pasta temporária do servidor..
mas no caso dos cookies, é vc quem define o tempo de vida do cookie.. e para isso, é salvo um arquivo no computador do usuário.. o q pode acontecer, é o usuário descobrir o arquivo do cookie, e alterar algumas informações contidas nele..
então, do ponto de vista do "alto nível", o cookie seria mais inseguro, pois as informações salvas no mesmo podem ser alteradas.. eu digo em alto nível, pois vc pode salvar informações num cookie q não comprometam o sistema, mesmo se o cookie for alterado.. por exemplo, se vc for salvar o login de um usuário num cookie, não coloque apenas o nome de usuário.. pois o cara pode descobrir o cookie e alterar o nome de usuário, assim, ele poderá utilizar qualquer outro usuário do sistema.. ao invés disso, salve o nome de usuário e a senha criptografada.. assim, o usuário não poderá continuar autenticado no sistema apenas trocando o nome do usuário no cookie..
finalizando, as duas tecnologias são absolutamente seguras, basta que vc saiba como utilizá-las.. cada uma tem um propósito mais específico, veja qual se adequa melhor ao teu sistema

por exemplo, se vc quer utilizar no seu sistema um "login eterno" (em q o usuário loga uma vez e não precisará logar nunca mais, pois o sistema já o reconhecerá), vc terá q utilizar cookies.. mas se vc deseja apenas fazer um login durante a sessão, utilize sessions
Se possível, veja a minha framework, com um link na assinatura.. ela possui um ferramentas q facilitam a utilização de ambos
Fui