My daughter was in ROTC for 4 years and my husband in the military for 7. They both say you ARE supposed to put your hand over your heart during the anthem.
Correct.
Only service members in uniform are required to render a hand (or weapon) salute.
A civilian (or serviceman out of uniform) should always uncover and place hand over heart.
Veterans (in uniform) and the President may render either salute as they please.