2013-06-26 46 views
6

Trong PHP, cách được chấp nhận để bảo mật thông tin xác thực đăng nhập cơ sở dữ liệu là lưu trữ chúng bên ngoài gốc web và tới include() các tệp có mật khẩu. Các thông tin đăng nhập cơ sở dữ liệu MySQL được lưu trữ an toàn như thế nào trong các ứng dụng Python?Làm thế nào để lưu trữ an toàn mật khẩu cơ sở dữ liệu bằng Python?

+0

gì có bạn phát hiện ra cho đến nay? Nhìn vào các ứng dụng PHP có vẻ vô ích nếu bạn muốn tìm hiểu về các thực hành trong Python trong mắt tôi. Và may mắn là có rất nhiều mã Python nổi xung quanh, vì vậy những gì đã nghiên cứu của bạn được bảo hiểm? – hakre

+1

Tôi đã đề cập đến thực hành tốt nhất của PHP vì đây là môi trường mà tôi quen thuộc. Đối với Python, tôi đã tìm thấy chỉ gợi ý để làm xáo trộn mật khẩu (base64 hoặc tương tự), và để đảm bảo rằng tệp Python không thể đọc được bởi những người khác (quyền 0700). Tôi hỏi ở đây nếu có cách nào tốt hơn. – dotancohen

+1

Tôi sử dụng thư viện keyring (https://pypi.python.org/pypi/keyring) và lưu trữ thông tin đăng nhập thực tế trong tiện ích lưu trữ thông tin xác thực của hệ điều hành. Nó rất dễ thực hiện, và nó có vẻ khá an toàn với tôi. – northben

Trả lời

4

Vâng, một cách để thực hiện việc này là đặt mật khẩu vào tệp cấu hình/ini riêng biệt là không được triển khai với dự án. Và sau đó, vượt qua con đường của tệp này để mục chính của ứng dụng, ví dụ:

python main.py --config=/path/to/config.ini

Lưu ý rằng bạn sẽ cần phải phân tích --config lập luận này (xem argparse) và sau đó đọc và phân tích các config.ini tập tin.

Cập nhật: Kể từ khi bạn đề cập đến các ứng dụng web, đó cũng là một cách khác để chuyển thông tin cấu hình - qua environ. Ví dụ, nếu bạn sử dụng mod_wsgi, bạn có thể putt này trong các chỉ thị wsgi:

SetEnv my_namespace.some_param some_value

Và sau đó, giá trị này sẽ có thể truy cập vào các ứng dụng với qua os.environ:

import os 
os.environ['my_namespace.some_param'] 
Các vấn đề liên quan