Pergunta

Preciso gerar UUID para eventualmente armazenar em um banco de dados. Posso gerar essas essas uuid a partir do JavaScript no navegador do cliente (Existem alguns exemplos aqui)?

Existe algum risco de segurança de fazê -lo dessa maneira? Entendo que qualquer um pode modificar o UUID antes de ser passado para o servidor para armazenar. Então, vou precisar verificar se eles são trully único antes de armazená -los no banco de dados, mas fora isso, há outras coisas para fazer o checkout?

(Desculpe pelo meu inglês, fique à vontade para corrigir quaisquer erros gramaticais)

editar: Para responder a perguntas sobre por que eu gostaria de fazer isso, é porque posso criar um novo objeto e é identificador no JavaScript e adicioná -lo à minha visualização e, em seguida, faça uma chamada AJAX ao servidor para adicioná -lo ao banco de dados. Dessa forma, não preciso carregá -lo de volta do banco de dados para saber o que é o identificador principal.

Foi útil?

Solução

Na verdade, não. Desde que seja um identificador simples e nada mais, e você está realmente verificando -o quanto à validade e exclusividade, não é diferente de contas de usuário com um ID no URL, por exemplo.

Olhe para o seu bar de URL. Aposto que 1296234 é a chave principal dessa questão, mas não posso realmente fazer nada com essas informações. O mesmo acordo com seu script.

Outras dicas

Que benefício você vê na geração desses do lado do cliente? Com toda a honestidade, a melhor opção é gerar o servidor de TI, fora do alcance dos usuários. Pode não dar salvá -lo de nenhum problema de segurança sério, mas reduzirá a validação redundante.

Sim. O risco não é específico para o UUID, qualquer ID gerado pelo cliente tem alguns riscos, dependendo do que você faz com o ID. O problema é que é muito difícil autenticar o JavaScript. Se você aceita o ID gerado pelo cliente, aceita quaisquer IDs dos hackers.

Os riscos podem incluir,

  1. Roubo de sessão. Se você usar o ID para identificar a sessão, alguém poderá usar um ID existente como ID gerado e o servidor poderá tratá -lo como uma sessão existente se o atendimento adequado não estiver tomando.

  2. Chaves duplicadas. O verdadeiro UUID é aleatório, mas alguém pode gerar teclas duplicadas que atrapalham seu banco de dados.

Você pode encontrar maneiras de se defender contra cada um desses ataques, mas isso é proteção passiva. Pode derrotar o objetivo original de gerar IDs no cliente, o que é simples.

Existe algum motivo pelo qual você não pode gerar o banco de dados (incremento) um ID?

Se, como você disser, você terá que verificar a singularidade do valor antes de enviá -lo de qualquer maneira, por que não apenas ter qualquer idioma de back -end que você esteja usando gerando. Isso tornaria muito mais opaco.

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