Recebemos uma solicitação de um de nossos clientes e, como nunca a encontrei antes, nem sei por onde começar a procurar.
Nosso cliente é uma rede de faculdades e estamos construindo um site para eles. Nesse site, entre outras coisas, haverá um formulário que os candidatos em potencial podem preencher para obter mais informações sobre os estudos em uma das faculdades. Depois que um usuário preenche este formulário - incluindo fornecer seu e-mail e / ou número de telefone -, a faculdade relevante entra em contato com as informações relevantes.
Agora, por razões legais, o cliente está solicitando que este formulário também tenha uma caixa de seleção que o candidato em potencial verifica para indicar que concorda em receber material promocional dessas faculdades. Claro que isso não é problema. Mas aqui vem a parte estranha da solicitação:
Os detalhes de cada formulário preenchido devem ser salvos de forma confiável. Aparentemente, salvar os valores do formulário em um banco de dados - uma coluna indicando se o usuário concordou ou não - não é suficiente, porque um banco de dados pode ser alterado após os usuários enviarem o formulário. Nosso cliente afirma que outros portais da faculdade criam uma captura de tela do formulário preenchido e o salvam em algum lugar de uma pasta dedicada, de uma maneira que é facilmente encontrada, como atribuir ao arquivo um nome que inclua o nome do usuário e a data e tempo.
Minha pergunta é a seguinte: você já ouviu falar em usar capturas de tela como um método para provar que um usuário realmente preencheu um formulário? Existem outros métodos considerados confiáveis?
Respostas:
Eu nunca ouvi falar de algo assim, e seria ridículo, porque uma captura de tela falsa pode ser produzida com a mesma facilidade que um valor falso em um banco de dados.
EDIT Além disso, quero dizer, WTF? como você não pode obter uma captura de tela da tela de alguém pela web, obviamente você terá que reconstruir a página no servidor e fazer uma captura de tela e, em seguida, quem pode dizer que você não a medicou?
fonte
Eu sei que estou começando esta resposta com uma pergunta, mas tenho um ponto:
Sem questionar o suposto absurdo da solicitação, se esse é um aplicativo Web típico baseado em navegador HTTP, como capturar programaticamente uma captura de tela e enviá-la ao servidor?
Espero que isso seja impossível, pois representaria uma séria preocupação com a segurança e a privacidade do navegador.
Agora imagine se o número do cartão de crédito de alguém também estivesse na tela no momento da captura da captura de tela. Agora você captura inadvertidamente as informações do cartão de crédito e seu sistema agora deve ser compatível com PCI. Essa é outra avenida de preocupação.
A única maneira de fazer isso provavelmente seria usar um plug-in de navegador de terceiros como Flash, Silverlight, Java Applets ou um controle ActiveX com privilégios elevados de sistema. O componente precisaria ser assinado e o usuário precisaria concordar que o componente tivesse acesso para executar o código em sua máquina.
Existem muitos buracos nesse plano e duvido seriamente que outras faculdades implementem algo semelhante. Certamente nunca ouvi falar disso na minha carreira profissional, pelo menos não com um aplicativo da web.
EDITAR:
Pensei em outra opção que provavelmente refletiria muito mais o que acho que seu cliente está realmente pedindo.
Eu tinha um aplicativo que fiz para um cliente em que o cliente tinha que concordar e assinar um documento da NDA para obter acesso ao aplicativo. Consegui isso através de um documento PDF assinável. Você pode ter um campo de assinatura em um documento PDF que, usando um componente USB caneta + teclado ou clicando nele para confirmar, para fins legais, será tão bom quanto se você tivesse assinado fisicamente o documento manualmente.
É chamado de assinatura eletrônica e eles se sustentam no tribunal.
O documento PDF após a assinatura é criptografado e um hash é armazenado junto com ele, para verificar se o documento NÃO foi violado após a assinatura. Os leitores de PDF modernos, como a Adobe, podem realmente transmitir um documento assinado para um servidor, onde você pode armazená-lo em um sistema de gerenciamento de documentos ou banco de dados para garantir a segurança.
A qualquer momento, os usuários administradores podem recuperar um desses documentos e imprimi-los.
Isso pode ser mais parecido com o que seu cliente realmente precisa, mas teve um tempo ruim para se explicar adequadamente.
fonte
Eu acho que a verdadeira pergunta seria: a pessoa cujo nome aparece no formulário realmente preencheu o formulário?
Em outras palavras, se alguém acessar o site e digitar o nome "Bill Gates" e clicar na caixa "está tudo bem em me enviar um email", como uma captura de tela provaria ser o verdadeiro Bill Gates?
Eles consideraram fazer o que muitos sites fazem e enviar um e-mail de verificação com um link exclusivo no qual alguém precisa clicar para confirmar? Dessa forma, pelo menos você tem um registro de que tem confirmação de alguém com acesso a essa conta de email.
fonte
Não tem isso
Essa discussão precisa começar com o entendimento de que não há como provar absolutamente que a pessoa concordou. Isso é verdade mesmo no mundo físico. Mesmo se você gravar um vídeo com a pessoa que assina fisicamente um formulário e coloca uma gota de sangue no formulário, eles podem dizer que o vídeo foi falsificado, o sangue foi retirado dela sem o conhecimento deles e a assinatura foi falsificada. Mas a prova absoluta não é necessária; apenas uma quantidade razoável de evidências.
No mundo digital, qualquer dado - texto, imagem, dados em um banco de dados ou e-mail - pode ser forjado. A coisa mais próxima da prova que podemos ter é que o usuário criptografe algo usando uma chave privada e mostre que sua chave pública será descriptografada. No entanto, atualmente isso está além da capacidade da maioria dos usuários e eles ainda podem dizer que sua chave privada foi roubada.
O melhor que podemos fazer é:
Salvar uma imagem em vez de texto não adiciona nada em termos de prova; tudo o que faz é tornar o processo mais lento e mais caro.
Assinaturas eletrônicas
No meu trabalho, temos um aplicativo em que os usuários assinam uma declaração. Legalmente, as jurisdições em que operamos aprovaram leis dizendo que um usuário digitando seu endereço de email em um formulário pode contar como uma assinatura eletrônica. Já verificamos que eles têm acesso ao endereço enviando um link no qual devem clicar. Isso não é prova absoluta, mas foi considerado bom o suficiente para nossos propósitos.
Quaisquer que sejam as informações capturadas, sugiro que você também capture um registro de data e hora , para que você possa dizer "você concordou nessa data e hora exata". Não tenho certeza se isso tem alguma relevância legal, mas parece mais convincente para mim, porque oferece mais oportunidade para o usuário provar o contrário ("Tenho provas de que não estava em um computador na época", por exemplo )
Enlouquecendo com isso
Algumas coisas que você pode fazer que podem ser consideradas evidências:
IANAL
Por favor, não tome nada disso como aconselhamento jurídico.
fonte
capturing a timestamp
é apenas inútil. Atualmente, é razoavelmente fácil para o usuário comum criar um navegador ou automação de desktop para agendar o preenchimento de formulários em algum momento futuro.Outra opção seria registrar a postagem HTTP bruta do cliente. Isso teria seu IP, de onde eles vieram, qual navegador etc., sem a necessidade de uma captura de tela. Em seguida, você pode fazer isso em uma tabela de inserção apenas em formato bruto ou em um arquivo de log simples e simples ...
Só estou tentando pensar em outras opções, porque eu tenho muitas solicitações ridículas como essa com muito mais frequência do que gostaria ...
fonte
Uma captura de tela é facilmente fabricada, caso você seja tão inclinado. Assim como qualquer tipo de hash, registro de data e hora, etc., sem uma base criptográfica. Presume-se que exista algum requisito regulamentar rigoroso para que a faculdade possa provar que obteve consentimento positivo antes de enviar material de marketing para as pessoas ou trocar suas informações com terceiros.
A única maneira confiável de fazer isso é exigindo uma assinatura criptográfica do usuário. Por exemplo, veja como o site http://launchpad.net solicita que você assine criptograficamente o Código de Conduta do Ubuntu.
Isso só tem força de lei nas jurisdições em que uma assinatura criptográfica pode ser usada em um documento legal, mas, ao assinar um trecho de texto específico, o usuário pode fornecer uma prova de seu consentimento que é posteriormente verificável. Seria praticamente impossível para a faculdade forjar uma assinatura correta a partir da mesma chave pública.
Observe que ainda é trivial para a faculdade atualizar seu banco de dados e, portanto, inverter o campo de consentimento, e também substituir a chave pública por outra pela qual eles conhecem a chave privada e gerar uma assinatura válida para essa chave.
Portanto, sem que terceiros assinem chaves para atestar que pertencem a um indivíduo em particular, tudo isso é possível que o usuário possa verificar se a faculdade forjou ou não suas configurações de privacidade - sem a assinatura de terceiros, é sua palavra contra a faculdade.
Se você exigir ainda que toda a propriedade da chave seja verificada e a chave assinada por um ou mais terceiros confiáveis, a faculdade não poderá forjar assinaturas aparentemente válidas sem muito mais exposição (elas teriam que enganar ou cooptar a terceiros confiáveis para que suas chaves falsas sejam assinadas). A dificuldade desse ataque aumentaria com o número de assinaturas necessárias de terceiros, mas, como observa outro pôster, não é impossível.
Então, para resumir:
Problemas práticos:
fonte
Eu começaria lendo assinaturas eletrônicas para o país / estado do cliente, com o foco de descobrir quais métodos e requisitos são juridicamente vinculativos. Tenho certeza de que nenhum país ou estado em sã consciência exigiria uma captura de tela como o único método de prova para uma assinatura eletrônica vinculativa.
Por exemplo, nos EUA, 47 estados aceitaram a Lei Uniforme de Transações Eletrônicas , que se aplica a "assuntos governamentais" entre outras coisas e, portanto, provavelmente se aplicaria aos requisitos da faculdade. Possui as seguintes partes que podem ajudar:
..
..
..
Depois de conhecer as leis, eu estimaria o custo do melhor método de assinatura eletrônica versus o custo do método de captura de tela.
Por fim, discutiria com eles minhas descobertas. Primeiro, eu explicaria a eles a melhor opção versus a opção proposta. Em seguida, explicaria a eles a quantidade de tempo que isso acrescentaria ao projeto. Por fim, se eu estivesse em um local para fazer isso, diria a eles que esse "recurso" adicionaria x dólares à conta final. Eu teria certeza de usar o custo adicional para mim como justificativa para o custo adicional para eles.
Se eles ainda não se mexessem, eu veria se eles têm um supervisor com alguma sanidade com a qual eu poderia ter a mesma reunião.
* Não sou advogado, por isso, procure aconselhamento jurídico se tiver dúvidas sobre alguma coisa.
fonte
Sendo esta uma questão legal, é claro que uma resposta real dependerá das leis nacionais e possivelmente até locais e das circunstâncias exatas. Então, obviamente, uma resposta real só pode vir de um advogado.
No entanto, no que diz respeito ao meu conhecimento jurídico (limitado), não vejo razão para supor que uma captura de tela seja considerada uma evidência de qualquer coisa, pois é obviamente muito fácil de falsificar.
Seu melhor curso de ação é provavelmente explicar ao seu cliente que este é essencialmente um problema jurídico e que é necessária a ajuda de um advogado. Em seguida, discuta com eles se eles querem que você discuta com um advogado ou se eles querem fazer isso sozinhos.
Para obter uma solução viável, convém discutir você mesmo (se o cliente concordar). Se você não quer esse incômodo (ou teme que eles não estejam dispostos a pagar por isso), deixe-o fazer.
fonte
Se você deseja validar se um documento permanece inalterado (registro do banco de dados, qualquer que seja), a "melhor prática" é assim:
Isso foi usado para garantir que os registros do seguro não fossem violados; no entanto, o "terceiro confiável" ao qual pagamos uma certa quantia em dinheiro promulgou os hashes à medida que foram assinados de volta para nós mesmos e vários outros clientes; portanto, havia vários guardiões de registros que poderiam ser intimados a obter provas.
Isso é claramente um fardo ridículo para algo como validar um campo booleano. Mas, se você mostrar ao cliente as despesas envolvidas, ele provavelmente deixará de ser burro.
fonte
Embora a solicitação em si seja absurda e você não possa ter uma prova legal razoavelmente feita de que uma pessoa A marcou a caixa de seleção ao preencher um formulário, há uma pergunta na sua pergunta que pode ser realmente respondida:
Isso, na verdade, pode ser mais fácil de fazer tecnicamente.
1. Mantenha uma prova de que os dados não foram alterados
Enviar um e-mail para si mesmo (para uma caixa de correio dedicada) com os valores realmente enviados pelo usuário é fácil (bem, pode ser, dependendo da configuração do servidor, do limite, das chances de ser filtrado como spam, o número de e-mails enviados por segundo etc.) e é suficiente para mostrar que os dados não foram alterados após o envio . Por exemplo, a menos que eu tenha acesso irrestrito aos servidores do Google , tenho certeza de que todos ficarão convencidos de que não posso alterar o conteúdo dos e-mails que enviei para o meu endereço do GMail.
2. Mantenha uma prova de que os dados estão corretos
As chances são de que o cliente não ficará satisfeito, porque mesmo se você tiver uma prova de que os dados não foram alterados posteriormente, como podemos ter certeza de que os dados não foram modificados entre o envio do formulário e o envio de informações por e-mail (e se comprometer com o banco de dados)? Nesse caso, o próximo passo é:
spamda empresa de seus clientes,spam.Seus e-mails podem ser processados automaticamente e mantidos como prova.
3. Mantenha uma prova de que os dados são autênticos
Agora que você tem uma prova de que a pessoa que usa o endereço de e-mail especificado realmente deseja receber o spam, o cliente ainda pode estar insatisfeito (o que geralmente acontece com clientes que têm solicitações malucas). E se alguém invadisse a caixa de correio de outra pessoa apenas para registrar o hackee para receber seu spam?
Nesse nível de loucura, você ainda pode responder tecnicamente aos requisitos. Agora, em vez de enviar um email opt-in, o usuário do site precisa:
Envie um e-mail com uma cópia do documento de identidade / passaporte e uma carta com uma assinatura, dizendo que essa pessoa realmente deseja receber o spam.
Valide o endereço de email através de um código secreto que será enviado de volta.
Mas antes de fazer isso, convença o cliente a implementar o que descrevi na parte 2 e testá-lo. O cliente verá que, após um mês ou dois, ninguém nunca envia nenhum e-mail de aceitação e esquece com prazer as provas legais e os dados alterados no banco de dados.
fonte
O status legal do que você faz é independente do mérito técnico da solução.
Por exemplo :
Durante anos, os membros britânicos do parlamento ignorariam as petições eletrônicas porque a lei exigia que as petições apresentassem uma assinatura para cada pessoa. Então, alguém percebe que um hash de endereço de email, data, hora e comentário - mesmo que não contenha chave secreta - constitui uma "assinatura digital" aos olhos da lei do Reino Unido.
Portanto, peça a um advogado para lhe dizer o que fazer e faça. Não se preocupe se é som.
Ou faça o que seu cliente pede, confiando que ele consultou um advogado. Verifique se há um registro da discussão.
fonte
Therefore, get a lawyer to tell you what to do, and do it. Don't worry whether it's sound. Or, do what your client asks, trusting that they have checked with a lawyer. Make sure there's a record of the discussion.
isso apenas cumpriria sua obrigação legal e política para com o cliente; Acho que o OP (com razão) está mais interessado em ajudar o cliente a cumprir seus requisitos legais (embora o cliente atualmente pareça entender mal seus próprios requisitos legais, sugerindo a solução errada).Como você deve obter uma captura de tela? O que você tem é o HTML e o que você está enviando para o cliente, e a resposta eletrônica do cliente. Nem envolve uma captura de tela.
A captura de tela é do que o navegador renderiza e diferirá um pouco, dependendo do navegador em uso e das configurações e equipamentos do outro lado. Pessoalmente, eu navego usando o Firefox, Chrome, Opera, Mobile Safari, ocasionalmente Lynx e até um pouco de IE algumas vezes.
Você pode renderizar a página em um navegador padrão e capturá-la, mas criar seu próprio documento e gravar não impressionará um juiz. Você pode pedir ao usuário para enviar uma captura de tela, mas boa sorte para fazer isso. Nem todos os dispositivos de navegação têm uma maneira óbvia de tirar e enviar uma captura de tela (como você faz isso no iPhone?). Se você estiver lidando com um cliente com deficiência visual usando um leitor de tela, pode não haver representação visual no final do cliente. (Vi alguns amigos meus cegos usarem um computador portátil, que não tinha tela alguma.)
Portanto, explique ao cliente que não há como obter uma captura de tela e talvez nem haja uma tela para tirar uma foto.
fonte
Na verdade, é possível criar um Controle de acesso obrigatório em conjunto com um Registro de data e hora confiável mais uma assinatura digital para o banco de dados para garantir que o valor da coluna seja confiável. As capturas de tela não são a resposta correta; no entanto, existem soluções de computação confiável que alcançam exatamente o que você deseja alcançar. Se você quiser mais detalhes, pode iniciar uma conversa comigo.
fonte
Como já foi dito, você não pode realmente provar que a pessoa concordou ou não com tanta certeza que a melhor solução é:
a) Peça à pessoa que confirme seu contrato por meio de um link enviado para o endereço de e-mail (isso garante que eles não entraram apenas em [email protected])
b) Dê a eles a opção de cancelar a assinatura de marketing / promoção
fonte
Um esquema que está mais próximo de ser inviolável seria gerar um par de chaves pública / privada quando o usuário preencher o formulário usando Javascript (do lado do cliente), depois enviar o conteúdo do formulário, a chave pública e a assinatura para servidor e apresente a chave privada ao usuário e peça que ele tome nota e armazene-a em algum lugar seguro.
Com esse esquema, você poderá provar que é impossível violar os dados do formulário, pois não conhecia a chave privada usada para gerar a assinatura. A fraqueza desse esquema é que você deve provar que nunca tocou na chave privada e que o usuário não deve perder a chave privada.
Como você deve provar que nunca teve acesso à chave privada, pode ser necessário incluir o HTML e todo o Javascript ao gerar a assinatura do formulário; isso comprova a forma exata que o usuário usa para enviar os dados (portanto, provando que você não modificou o formulário / javascript desde o envio deles, provando que você não usou o javascript para roubar a chave privada).
Esse esquema é complexo e, como em qualquer sistema complexo, não posso garantir que não haja um buraco (na verdade, estou bastante confiante de que existe, e alguém provavelmente seria capaz de apontar isso).
fonte
Uma captura de tela não seria muita prova, pois não há como verificar se uma captura de tela é real. Isso poderia ser tão facilmente falsificado. Quanto mais soluções técnicas, existe o mecanismo de armazenamento de arquivospara MySQL que suporta apenas insert e select. Você não pode excluir da tabela. Lembre-se de que pode ser possível ALTER TABLE para um mecanismo de armazenamento diferente, excluir o registro e ALTER TABLE para alterar o mecanismo novamente sem que ninguém perceba, mas, com sorte, você pode limitar o processo de root e permitir que o root efetue login localmente . Depois, basta rastrear os logins na máquina de banco de dados local real para descobrir quem possivelmente a alterou. Você também pode analisar os logs binários ou ativar o log de consultas brutas para ver quem poderia ter emitido consultas que resultaram nesse tipo de atividade. Não tenho certeza de qual tecnologia de banco de dados você está usando, mas provavelmente você poderá encontrar uma solução que impeça a alteração fácil dos dados.
fonte
Vou recomendar que você se sente e leia a Lei ESIGN . Este estatuto abrange o que é e o que não é necessário para registrar uma assinatura eletrônica para que ela seja juridicamente vinculativa. Em um empregador anterior, descobrimos que o mais difícil obstáculo legal era poder tornar as assinaturas e os documentos legíveis por 10 a 15 anos no futuro.
Como outros já apontaram, a captura de tela é algo que não pode ser feito. Pode ser falsificado, pois todos os programas "mágicos" são pura falsificação: você vê alguém sendo serrado ao meio, mas na verdade não é serrado ao meio.
fonte
Já lidei com minha parte de loucos antes. Posso pensar em algumas soluções técnicas, mas por que não voltar ao cliente e sugerir que a pergunta seja "Você não deseja receber e-mails de marketing?" (ou redação semelhante) e permitir que a pessoa desative a opção? Então você não precisa de uma captura de tela.
fonte
Como todos observaram, o mérito técnico e jurídico da solicitação de recurso é inexistente. Dito isto, existe a opção de permitir que um usuário faça e carregue manualmente uma captura de tela como um anexo de formulário.
fonte