Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Enconding dos arquivos

Olá. Estou fazendo o download dos datasets e salvando no runtime do colab utilizando o seguinte código:

def download_data():

  import requests

  linguas_dataset = [
              "portugues",
              "espanhol",
              "ingles"
  ]


  base_file_name = "stackoverflow_{}.csv"
  base_url = "https://caelum-online-public.s3.amazonaws.com/1321-nlp-modelos-linguagem/Dados+csv/{}"

  for lingua in linguas_dataset:

    file_name = base_file_name.format(lingua)
    url = base_url.format(file_name)

    with requests.get(url) as r:
      with open(file_name, "w", encoding="utf8") as f:
        f.write(r.text)


download_data()

Porém, quando realizo a leitura com o pandas (ou até mesmo quando abro os arquivos para vizualizar dentro do colab), tenho caracteres estranhos. Alguém sabe como posso resolver isso? Segue um exemplo do texto lido:

Se eu fizer o hash de senhas antes de armazená-las em meu banco de dados é suficiente para evitar que elas sejam recuperadas por alguém?

Estou falando apenas da recuperação diretamente do banco de dados e não qualquer outro tipo de ataque, como força bruta na página de login da aplicação, keylogger no cliente e criptoanálise rubberhose. Qualquer forma de hash não vai impedir esses ataques.

Tenho preocupação em dificultar ou até impossibilitar a obtenção das senhas originais caso o banco de dados seja comprometido. Como dar maior garantia de segurança neste aspecto?

Quais preocupações adicionais evitariam o acesso às senhas? Existem formas melhores de fazer esse hash?
2 respostas

Atualizando o post:

Quando acesso o conteúdo textual de um requisição através do r.text, o enconding retornado no headers dessa requisição é utilizado para acessar esse atributo. Podemos verificar isso usando r.encoding. Além disso, podemos alterar esse encoding, e sempre quando fizermos r.text o Requests utilizará esse encoding.

Se alguém tiver outra solução, eu gostaria de saber =D.

solução!

Oii Otávio, como você está?

Sinto muito pela demora em obter um retorno.

Sua abordagem de descobrir o encoding pela requisição está correto. Porém, é necessário alterar o parâmetro encoding para o que foi retornado na requisição, que é o ISO-8859-1 ou simplesmente latin1, como mostro abaixo:

with open(file_name, "w", encoding="latin1") as f:

Na documentação do Python é possível verificar as codificações e suas respectivas linguagens, em muitos casos a descoberta do encoding é um processo de tentativa e erro. Os mais utilizados são: utf-8, latin1 e cp1252.

Qualquer dúvida fico à disposição.

Abraço e bons estudos!