Usuário com melhor resposta
Segurança comprometida dos dados em um Webform

Pergunta
-
Ola
Uma questão sobre alteração de dados não autorizada
Tenho um formulário da aplicação, onde o botão salvar fica desabilitado,para que não seja possível alterar nenhum dado, ficando disponível apenas para consulta.
Usando o Firebug, acessei a página e removi a tag disabled="disabled" do botão, tornando possível clicar.
Da mesma forma, tirei a tag disabled="disabled" de um dropdownlist, mudei o valor e consegui salvar, burlando a regra que não permite fazer isso.
Sempre soube estas alterações não poderiam ser feitas, pois era feita nova validação quando os dados seriam enviados para o servidor.
Nunca me preocupei com isso, pois confiava no framework. Mas parece que não.
Não uso nenhuma exceção quanto a segurança. Está sendo utilizado padrão de um projeto
web.config
<pages buffer="true" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
página<%@ Page Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" CodeBehind="arq.aspx.cs" Inherits="Namespace.nome" Title="Notas do Aluno" %>
Estou usando o framework 4.5
Alguma sugestão?
Existe alguma configuração nova neste framework para validar esta situação?
Respostas
-
Você precisa fazer o tratamento diretamente no servidor, ou seja, no Code-Behind.
Toda validação de negócio deve ser priorizada no servidor - isso é substancial.
Não só pelo Firebug, mas pelo console do Chrome, IE, enfim, esses dados podem ser modificados.- Bloqueie no servidor a submissão do formulário, ou seja, dentro do evento "btn_Click" verifique se o usuário pode fazer a edição, caso não, não processe o formulário
- Se for possível, exiba os dados do formulário em labels para a tela de consulta.
Independente do padrão a ser seguido, sempre estresse o conceito da sua página. Sugiro a leitura abaixo:
http://www.devmedia.com.br/test-driven-development-tdd-simples-e-pratico/18533- Marcado como Resposta S4ndr0 quinta-feira, 9 de junho de 2016 14:02
Todas as Respostas
-
Você precisa fazer o tratamento diretamente no servidor, ou seja, no Code-Behind.
Toda validação de negócio deve ser priorizada no servidor - isso é substancial.
Não só pelo Firebug, mas pelo console do Chrome, IE, enfim, esses dados podem ser modificados.- Bloqueie no servidor a submissão do formulário, ou seja, dentro do evento "btn_Click" verifique se o usuário pode fazer a edição, caso não, não processe o formulário
- Se for possível, exiba os dados do formulário em labels para a tela de consulta.
Independente do padrão a ser seguido, sempre estresse o conceito da sua página. Sugiro a leitura abaixo:
http://www.devmedia.com.br/test-driven-development-tdd-simples-e-pratico/18533- Marcado como Resposta S4ndr0 quinta-feira, 9 de junho de 2016 14:02
-
Entendi.
Para este caso em específico, ocultando o botão no lugar de desabilitar resolve o meu problema.
Pelo que entendi, não existe uma maneira "automática", onde eu informo alguma configuração e esta situação é validada pelo framework?
Algo como o <pages validateRequest="true" />.
- Editado S4ndr0 quinta-feira, 9 de junho de 2016 14:18
-
Bom dia,
Concordo com o colega Gilberto, você precisa tratar isso no servidor.
Em relação ao trecho onde você disse que confiava no Framework, ele é confiável mesmo. O que acontece é que sua página é HTML, isso significa que independente da linguagem de programação, independente do Framework você precisa criar suas regras no servidor.
Isso acontece também com 'javascript' na qual é possível manipular. Ou seja o desenvolvedor cria uma função e antes de dar o submit faz varias validações, uma pessoa com experiência pode simplesmente submeter o form sem validar, por isso a necessidade de fazer o tratamento no servidor.Espero ter ajudado.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.