ID USUARIO ASP.NET

ALTAIR148 22/03/2017 15:40:57
#472621
Boa tarde,

Estou criando um pequeno sistema em asp.net eu tenho algumas dúvidas.

1 - Tenho uma listagem de clientes, e na frente um botão onde eu abro o cadastro deste cliente, no botão tenho uma tag que é o ID do cliente no banco de dados, o que posso fazer para que esse id não fique visivel no HTML da página? ou até mesmo que a pessoa não o altere.
2 - Tenho uma tela de cadastro de alteração do cliente, e eu preciso saber o id do cliente para alterar-ló no banco de dados, para fazer o UPDATE, o que posso fazer que não permita o usuário alterar esse id desse cliente? Assim quero evitar que o mesmo altere o ID direto no HTML e salve por cima de outro cadastro?

Obrigado.
KERPLUNK 22/03/2017 16:21:16
#472624
Resposta escolhida
O que você está se referindo, se chama HTML Injection ou URL Injection. São ambos técnicas para hackear muito comuns. Para evitar que isso seja explorado, o uso de boas técnicas de programação é UMA das chaves, além da correta estruturação da sua aplicação. Como você viu, o id do objeto à ser modificado é essencial, você precisa dele para saber o que vai ser alterado no banco. O usuário(um espertinho, na verdade) pode tranquilamente usar HTML Injection para alterar esse ID. Caso o ID faça parte da URL(como parâmetro) para visualizar o objeto, não há muito que se possa fazer. Veja a URL nessa página mesmo, temos lá vários parâmetros:
Modulo, metodo, id e pagina. Veja que o id se refere à esse tópico que estamos, se você colocar um outro id lá, você vai ser levado à esse outro tópico. Quanto à isso é impossível evitar que o usuário faça, pois trata-se de uma requisição válida e deve ser atendida normalmente. Se você quer impedir que usuários tenham acesso à certos registros, então você precisa de um sistema de login e permissões integrado e não baseado em Session, cookie ou URL. Sugiro que você leia artigos sore os temas que falei, HTML Injection e URL Injection, eles vão te mostrar porque programação Web é um paradigma COMPLETAMENTE diferente de programação para aplicações desktop.
ALTAIR148 23/03/2017 15:30:17
#472688
Citação:

:
O que você está se referindo, se chama HTML Injection ou URL Injection. São ambos técnicas para hackear muito comuns. Para evitar que isso seja explorado, o uso de boas técnicas de programação é UMA das chaves, além da correta estruturação da sua aplicação. Como você viu, o id do objeto à ser modificado é essencial, você precisa dele para saber o que vai ser alterado no banco. O usuário(um espertinho, na verdade) pode tranquilamente usar HTML Injection para alterar esse ID. Caso o ID faça parte da URL(como parâmetro) para visualizar o objeto, não há muito que se possa fazer. Veja a URL nessa página mesmo, temos lá vários parâmetros:
Modulo, metodo, id e pagina. Veja que o id se refere à esse tópico que estamos, se você colocar um outro id lá, você vai ser levado à esse outro tópico. Quanto à isso é impossível evitar que o usuário faça, pois trata-se de uma requisição válida e deve ser atendida normalmente. Se você quer impedir que usuários tenham acesso à certos registros, então você precisa de um sistema de login e permissões integrado e não baseado em Session, cookie ou URL. Sugiro que você leia artigos sore os temas que falei, HTML Injection e URL Injection, eles vão te mostrar porque programação Web é um paradigma COMPLETAMENTE diferente de programação para aplicações desktop.



Então andei lendo sobre HTML INJECTION e e SQL INJECTION, mas ainda não consegui nada que pudesse me ajudar. Alguma sugestão de técnica a ser usada?
KERPLUNK 23/03/2017 17:42:45
#472691
Então você leu e não entendeu...
LVFIOROT 23/03/2017 20:33:17
#472694
existe algumas formas, como por exemplo criar keys/crifas para campos primordias que nao podem ser manipulados.
seria uma criptografa e descriptografa as chaves uma um MD5/SHA ou qualquer outra tecnica de validação.
KERPLUNK 23/03/2017 21:13:52
#472695
O caso é que não existe uma maneira de impedir que o usuário manipule a URL. Isso é fato. Aí entra o seu controle de permissões, que deve ser muito bem feito. Por exemplo, um usuário não tem permissão de visualizar um certo objeto. Ao abrir a view do objeto você deve validar isso, ou seja, se o usuário não tem permissão, você exibe uma mensagem de erro e faz qualquer outra coisa que seja necessário, como logar o evento e/ou enviar um e-mail para o administrador/superior do usuário avisando do ocorrido. Quanto à HTML Injection a coisa complica um pouco mais. Uma das técnicas mais usadas é a sanitização, ou seja, jamais confiar em dados vindos do client.
LVFIOROT 23/03/2017 21:18:40
#472696
um exemplo de codigo

KERPLUNK 23/03/2017 21:26:52
#472697
LVFIOROT, não é uma questão de código, mas de conceito.
KERPLUNK 23/03/2017 21:27:24
#472698
LVFIOROT, não é uma questão de código, mas de conceito.
Tópico encerrado , respostas não são mais permitidas