Doctrine korzysta z prepared statements, które o ile jawnie nie wpleciesz jakieś niezaufanej treści w treść zapytania w pełni zabezpieczają przed SQL Injection (więcej w google). Do tego dochodzi jeszcze fakt, że nie tworzysz (z reguły) bezpośrednio zapytań SQL, a DQL więc to kolejna warstwa chroniąca Cię przed potencjalnym atakiem.
Nie mniej jednak zrobienie czegoś takiego:
$dql = 'SELECT ... WHERE abc.def = ' . $jakaśZmienna . ' ... '
Już może umożliwić atak.
Cytat
I drugie pytanie - jak jest z bezpieczeństwem sesji w symfony?
Sesja w Sf jest na tyle bezpieczna na ile bezpieczny jest jej sterownik. Domyślnie masz włączony natywny sterownik PHP z regeneracją ID.