2012-10-15 42 views
5

Gần đây tôi đã triển khai một ứng dụng Flask trên Heroku. Nó cung cấp API trên đầu trang của API hiện tại và yêu cầu khóa API bí mật cho dịch vụ gốc từ người dùng. Ứng dụng thực sự chỉ là một vài biểu mẫu, các giá trị trong số đó được chuyển qua ajax đến một URL cụ thể trên máy chủ. Không có gì lạ mắt. Tôi thực hiện các bước để không lưu trữ thông tin bí mật trong ứng dụng và không muốn có dấu vết của nó ở bất cứ đâu trong ứng dụng.Định dạng nhật ký bộ định tuyến Heroku

Nhìn vào nhật ký từ heroku logs --source heroku, quy trình bộ định tuyến heroku lưu trữ tất cả các yêu cầu HTTP cho ứng dụng, bao gồm các yêu cầu đó bao gồm thông tin bí mật.

Có cách nào để chỉ định định dạng nhật ký cho quy trình heroku để không lưu trữ URL được phân phối không?

+0

Thông tin bí mật trong chính URL đó hoặc đơn giản là trong dữ liệu POST đang được gửi? – aezell

+0

Thông tin bí mật nằm trong URL mà ajax truy cập. – sburns

+1

Trong trường hợp đó, bạn có thể sử dụng một số loại khóa để mã hóa dữ liệu trước khi thêm nó vào URL và giải mã nó khi nó truy cập vào máy chủ không? Bằng cách đó, thông tin không có trong văn bản rõ ràng trong nhật ký. Một cái gì đó giống như một chữ ký với một nonce và một khóa bí mật được chia sẻ sẽ hoạt động. Không trả lời câu hỏi, nhưng có thể là một giải pháp cho mối quan tâm của bạn. – aezell

Trả lời

1

Như những người nhận xét khác đã đề cập, thực tiễn không tốt là đặt thông tin bí mật vào URL. Các bộ lọc này có thể được lưu vào bộ nhớ cache hoặc được ghi lại bởi một số hệ thống (ví dụ: bộ định tuyến, máy chủ proxy, bộ nhớ cache) trên chuyến đi tới máy chủ. Có một số cách để giải quyết vấn đề này:

  • Đặt chúng vào số Authorization header. Đây có lẽ là cách xác thực cách phổ biến nhất được xử lý cho các API dựa trên REST.

  • Đặt chúng trong nội dung POST. Điều này làm việc để có được nó ra khỏi URL, nhưng là một chút kỳ lạ ngữ nghĩa để nói rằng bạn đang POST các thông tin để một số tài nguyên (nếu điều này một API REST), trừ khi nó là một cuộc gọi đăng nhập.

+0

Tôi đã từ khi ứng dụng được tái cấu trúc sử dụng yêu cầu POST. – sburns

+0

Mặc dù nói chung tôi không thể không đồng ý rằng việc đặt thông tin bí mật trong một URL có thể nguy hiểm, trên kết nối HTTPS các thông số url được mã hóa. Đối với một cái gì đó như một API, params url có thể làm cho rất nhiều ý nghĩa. Tuy nhiên, tôi vẫn không có câu trả lời về cách lọc chúng từ nhật ký bộ định tuyến heroku. – McFadden

Các vấn đề liên quan