Bug - Falha Segurança Update

Por curiosidade hoje fazendo testes percebi uma falha de segurança do SC, ao meu ver “Grave”.

Detalhes:
Tenho um formulário que com uma determinada condição, faço o uso da macro “sc_field_disabled(nomecampo)”,
isso torna meu campo inalterável(disabled). Agora colocamos o sistema em produção, aparece aquele usuário mais experto que conhece Javascript/Html,
esse usuário então vai no meu objeto:input e tira o atributo de disabled tornando se assim o campo editável, altera o campo e faz o update. O scriptcase está fazendo o update desse campo, mesmo estando disabled, tornando se assim uma “feature” totalmente insegura.

Lei do sistema WEB:
Nunca se deve fazer uma validação apenas do lado do cliente.

Solução parcial:
Seria uma comparação no evento onBeforeUpdate se o campo foi alterado ao seu estado inicial, fazendo uma busca no banco. Não é viável pois é trabalhoso e vai decair um pouco a performance do Update.

Cara isso ao meu ver não tem justificativa ao nível do software que é o SC. Deve ter sido algum estagiário que criou esse recurso rsrsrsrs…

PS: Fiz o teste apenas usando a macro, não testei desabilitando no próprio campo. Não tem necessidade de testar, pois o erro deve ser corrigido em ambos.

Se estou equivocado peço desculpas.
Versão SC: 7.1.14

Olá, Almeida.

Por causa dessas brechas do lado do cliente é que sempre prefiro utilizar a opção Campo Label: Sim, o que faz com que não seja mostrado o INPUT.

Não creio que seja um ‘bug’ do SC, mas sim uma brecha da HTML.

Wennys, entendo seu lado, mas mesmo o Label é vulnerável.

Opção 1:
Se eu ir na TAG e adicionar um html e submeter o formulário vai ser inserido da mesma maneira. Esse tratamento de desabilitado tem que ser tratado no servidor o javascript vai ser apenas uma camada de visão.

Opção 2:
Se eu fizer um CURL para o servidor e passar esse dado ele vai submter também.

Opção 3:
Se eu fizer um AJAX para a URL com os dados e parâmetros, a parte de Backend do SC vai aceitar e fazer também.

Resumindo:
O backend tem que estar preparado para não aceitar esse dado. Até porque não tem como proteger seu HTML, nem retirar essas brechas, o “disable” é apenas um estado do campo para melhorar a interatividade do usuário e o servidor.

Perfeito, Almeida.

Realmente a Netmake tem que tentar minimizar isso aí.

Obrigado pelas explicações.

Boa noite,

Reportei este problema para nossa equipe de bugs.

att,
Bernhard Bernsmann