All three are verbs. They all basically carry the same meaning but「違反」and「違犯」are stronger.「違反」emphasizes the idea of falling short of, while 「違犯」emphasizes the action of going against.「違犯」is more specific and its scope of usage is more limited in comparison to「違反」.

You might also notice that 犯 is used in instances like breaking the law, where as 反 is just doing the opposite of something and is often used as the prefix: counter-.