Trong trường hợp của tôi, tôi đang sử dụng API Dropbox. Hiện tại tôi đang lưu trữ khóa và bí mật trong một tệp JSON, chỉ để tôi có thể gitignore nó và giữ nó ra khỏi repo Github, nhưng rõ ràng là không tốt hơn là có nó trong mã từ một quan điểm bảo mật. Đã có rất nhiều câu hỏi về việc bảo vệ/làm xáo trộn Python trước đây (thường vì lý do thương mại) và câu trả lời luôn là "Đừng, Python không có ý nghĩa như vậy".Tôi nên lưu trữ khóa API trong ứng dụng Python bằng cách nào?
Vì vậy, tôi không tìm cách bảo vệ mã nhưng chỉ là một giải pháp cho phép tôi phân phối ứng dụng mà không tiết lộ chi tiết API của mình.
đặt chúng vào tệp văn bản dưới dạng giá trị được mã hóa. Tạo khóa mã hóa được lưu trữ riêng tư, giải mã khi cần. Có thể có một cách tốt hơn, nhưng cách này đã làm việc tốt cho tôi trong quá khứ. –
Nếu ai đó chạy chương trình trên máy tính của họ và chương trình sử dụng khóa, chương trình sẽ được tiết lộ thực tế. Nó không mất một thiên tài để cháy lên WireShark, hãy để chương trình kết nối, và lọc việc chụp cho các kết nối đến dropbox (hoặc một số tiêu chuẩn khác - trường hợp xấu nhất bạn đang đào qua một vài trăm gói). Và chỉ đơn thuần là làm xáo trộn chương trình sẽ không mua cho bạn bất cứ điều gì, vì bạn không thể thay đổi chuỗi chữ mà khóa API là, hoặc nó sẽ không sử dụng cho chương trình của bạn. – delnan
@delnan Nhưng liệu khóa API có thể hiển thị trong lưu lượng truy cập HTTP không? Dropbox làm mọi thứ qua SSL. Tôi không biết liệu họ có sử dụng các biến GET hoặc POST hay chỉ đặt chúng vào các tiêu đề của yêu cầu HTTP. Những thứ đó được mã hóa trong một yêu cầu HTTPS hay chỉ là phần thân của yêu cầu? – espekia