← Back to front page

Posted on in Technology

Kokeiltuani Linodea jonkin aikaa muissa projekteissa päätin siirtää myös tämän blogini sen alle. Samalla sain serverin pyörimään Lontooseen, kun se ennen oli Slicehostilla USA:ssa. Nyt ehkä viitsii laittaa sähköpostitkin sinne.

Otin myös käyttöön bcrypt-salauksen Djangon salasanoissa, vaikkei niitä käytetäkään muuta kuin ylläpitotunnuksiin. Tämä onnistuu suhteellisen helposti asentamalla ensin bcrypt-paketti:

pip install py-bcrypt

Django-sovellukseen lisätään sitten sopivaan kohtaan (omassa tapauksessani middleware.py) pieni monkey-patch, joka salaa ja tarkistaa salasanat bcryptillä:

from django.contrib.auth.models import User
import bcrypt

django_check_password = User.check_password

def bcrypt_check_password(self, raw_password):
    if self.password.startswith('bc$'):
        return bcrypt.hashpw(raw_password, self.password[3:]) == self.password[3:]
    return django_check_password(self, raw_password)

def bcrypt_set_password(self, raw_password):
    self.password = 'bc$' + bcrypt.hashpw(raw_password, bcrypt.gensalt())

User.check_password = bcrypt_check_password
User.set_password = bcrypt_set_password

Tämän muutoksen jälkeen salasanaa voi vaihtaa normaalisti Djangon ylläpitoliittymällä ja sisäänkirjautuminen toimii sekä vanhoilla SHA1- että uusilla bcrypt-salasanoilla. Oletuksena py-bcrypt käyttää 12-factor hashia, joka lienee nykyhetken CPU-nopeuksille optimaalinen.

0 Comments
Comments are closed.