Pergunta

Aqui estão algumas das práticas comumente conhecidas para garantir um aplicativo MVC:

  • Codifique sua saída
  • Parametrize seu SQL
  • Teste sua pesquisa para trás e para frente
  • 1 Way Hash senhas
  • Bloquear contas ou limitar as tentativas de login
  • Use a representação baseada em código ao acessar o sistema de arquivos
  • Acesse o SQL com um nome de usuário bloqueado
  • Use Honey-Pots ou Captchas para envios de formulários para combater os bots

Se houver algum que eu perdi ou desviado, sinta -se à vontade para contribuir.

Em que outras técnicas/práticas recomendadas você usa ou pensa ao testar seu próprio software. O que você faz para "chutar os pneus" antes de fazer um aplicativo ao vivo.

Quais serviços de teste de caneta ou software você usa, se houver?

Foi útil?

Solução

Todos os métodos que usam o ModelBinding devem ser protegidos com listas de braços ou listas negras em propriedades vinculáveis.

string[] allowedProperties = new[]{ "Title", "Description"};
UpdateModel(myObject, allowedProperties);

ou

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include="Title,Description")] MyObject object )
{

}

Obviamente, isso é impedir que solicitações criadas tentem atualizar/manipular seus objetos de maneiras que não eram pretendidas.

Outras dicas

Sua lista é boa, embora seja um pouco vaga. Por exemplo, o MD4 é um hash unidirecional, mas é extremamente inseguro, pois posso gerar uma colisão na minha área de trabalho em menos de um dia. SHA256 com um grande valor de sal é uma abordagem mais segura. (Eu sei que até isso é descrição incompleta, não chama)

Nunca há uma lista de verificação de segurança que funcione em geral. Aplicações específicas podem ter vulnerabilidades específicas. Às vezes, essas falhas podem ser erros lógicos que realmente não têm uma classificação.

o OWASP Top 10 As vulnerabilidades de aplicativos da Web são um excelente recurso que você deve estudar. Mais notavelmente, você está perdendo o XSRF na sua lista, que pode ser um ataque devastador. Há um grande número de ataques baseados em "Sink" que você não listou. Por exemplo, e se um invasor pudesse passar em um caminho de sua escolha para FOPEN? Um estudo em Scarlet passa por muitos desses ataques contra o PHP.

Todas as suas sugestões se aplicam a qualquer aplicativo da Web, não apenas aos aplicativos MVC.

Uma sugestão específica do MVC seria algo como "controladores magros, modelos de gordura".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top