ASP.NET MVC: A validação de anotação de dados é suficiente?

Eu estou usando a validação de anotação de dados extensivamente no asp.net MVC 2. Este novo recurso foi uma grande economia de tempo, como agora sou capaz de definir validação do lado do cliente e validação do lado do servidor em um só lugar. No entanto, enquanto eu estava fazendo alguns testes detalhados, percebi que é muito fácil para alguém ignorar a validação do lado do servidor se eu confiasse apenas na validação de Anotação de Dados. Por exemplo, se eu definisse um campo obrigatório anotei a propriedade com o atributo [Required] e coloquei uma caixa de texto para esse campo obrigatório em um formulário, um usuário poderia simplesmente remover a caixa de texto do DOM (que pode ser feito facilmente pelo Firebug) e agora a validação de anotação de dados não será acionada nessa propriedade durante ModelBinding dentro de um controlador. Para garantir que a validação "requerida" seja acionada, posso repetir a validação após a ModelBinding acontecer, mas depois repetirei minha lógica de validação.

Qual é a recomendação de todos sobre validação? A validação de anotação de dados é suficiente? Ou a validação precisa ser repetida para garantir que as validações sejam acionadas em todas as situações?

Comentário de acompanhamento: Com base nas respostas abaixo, parece que não posso confiar apenas na validação do Model Binder e Data Annotation. Como estamos concluindo que é necessária uma validação adicional do lado do servidor, existe uma maneira fácil para a minha camada de serviço acionar a validação com base no que foi definido nas anotações de dados? Parece que isso nos dará o melhor de ambas as palavras ... não precisaremos repetir o código de validação, mas ainda garantiremos que a validação seja executada mesmo que o Model Binder não a acione.

Vou postar este comentário de acompanhamento como uma questão separada, já que ele coloca uma questão diferente da original.

questionAnswers(5)

yourAnswerToTheQuestion