none
Segurança comprometida dos dados em um Webform RRS feed

  • 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?

    quinta-feira, 9 de junho de 2016 11:56

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.

    1. 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
    2. 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

    Abs.

    • Marcado como Resposta S4ndr0 quinta-feira, 9 de junho de 2016 14:02
    quinta-feira, 9 de junho de 2016 13:19

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.

    1. 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
    2. 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

    Abs.

    • Marcado como Resposta S4ndr0 quinta-feira, 9 de junho de 2016 14:02
    quinta-feira, 9 de junho de 2016 13:19
  • 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
    quinta-feira, 9 de junho de 2016 14:01
  • 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.

    quinta-feira, 9 de junho de 2016 14:06