python - CherryPyでのユーザー管理

python authentication security cherrypy

CherryPyをベースにしたWebアプリケーションを開発します。これは、一般ユーザーが登録して後でログインできるアプリになります-通常のもの。 RailsやDjangoなどの他のフレームワークには、セキュリティに関する高度なコードが含まれています。暗号化されたソルトパスワード、セッションハイジャックの防止など... CherryPyでこのようなものはすでに利用可能ですか?今のところ非常に単純な解決策しか見つかりませんでした!?
答え
コメントに修正を含めて、この認証の例を使用しました。

http://tools.cherrypy.org/wiki/AuthenticationAndAccessRestrictions

これが暗号化の方法です

import Crypto.Random
from Crypto.Cipher import AES
import hashlib

# salt size in bytes
SALT_SIZE = 16

# number of iterations in the key generation
NUMBER_OF_ITERATIONS = 20

# the size multiple required for AES
AES_MULTIPLE = 16


__all__ = ['Encryption']

class Encryption(object):
    def generate_key(self, password, salt, iterations):
        assert iterations > 0    
        key = password + salt    
        for i in range(iterations):
            key = hashlib.sha256(key).digest()  

    return key

    def pad_text(self, text, multiple):
        extra_bytes = len(text) % multiple    
        padding_size = multiple - extra_bytes    
        padding = chr(padding_size) * padding_size    
        padded_text = text + padding

        return padded_text

    def unpad_text(self, padded_text):
        padding_size = padded_text[-1]    
        text = padded_text[:-padding_size]

        return text


    def encrypt(self, plaintext, password):
        salt = Crypto.Random.get_random_bytes(SALT_SIZE)    
        key = Encryption.generate_key(self, password, salt, NUMBER_OF_ITERATIONS)    
        cipher = AES.new(key, AES.MODE_ECB)    
        padded_plaintext = Encryption.pad_text(self, plaintext, AES_MULTIPLE)    
        ciphertext = cipher.encrypt(padded_plaintext)    
        ciphertext_with_salt = salt + ciphertext

        return ciphertext_with_salt


次に、暗号化関数を呼び出します

encryptedPassword = Encryption.encrypt(self, Password, bytes(cherrypy.request.app.config['Encryption']['Password'], 'UTF-8'))


お役に立てれば!

アンドリュー
関連記事

python - GStreamerとTheora

python - DjangoカスタムChangeUserForm設定is_active、is_staff、is_superuserをFalseに設定

python - StringToSignの作成

python - 'コマンドラインインテリセンス'(TAB TAB)をPythonスクリプトで動作させる方法は?

python - 自動的にインポートされたモジュールを制御する

python - 書式付きでPythonスクリプトを保存-特殊文字

python - ツイストされた遅延コールバックチェーン

python - JSONからデータを読み込んだ後のメモリのクリーニング

python - クラスが定義されたときに自動登録する(ただし、どこにもインポートしない)

python - Pylonsを初めて使用し、ルートを理解しようとする