2015-08-25 11 views
5

Tôi thiết kế một (as-RESTful-như-có thể) API và muốn biết làm thế nào bạn sẽ giải quyết tốt nhất như sau:REST của Thiết kế API: GET đòi hỏi các thông số nhạy cảm mà không nên được lưu trữ trong nhật ký máy chủ web

  • Giả sử chúng ta đang thiết kế một thiết bị đầu cuối TLS để lấy một số tài nguyên: GET /objects/{id}
  • chúng tôi không muốn đối tượng {id}s phải được lưu trữ trong nhật ký máy chủ web của chúng tôi, vì vậy chúng tôi muốn tránh sử dụng chuỗi truy vấn hoặc URI params; để lại cho chúng ta các thông số trong cơ thể yêu cầu. (giả sử dữ liệu sao cho id nhạy cảm và chúng tôi không có quyền truy cập vào một id không nhạy cảm khác)
  • Tôi hiểu rằng bạn nên tránh có tham số trong phần thân yêu cầu GET. HTTP GET with request body
  • Tôi hiểu rằng việc sử dụng POST để lấy dữ liệu cũng được đề xuất vì nó dẫn hướng nhiều hơn đối với kiểu thiết kế RPC và thường có thể khó hiểu.

Làm cách nào chúng ta có thể thiết kế điểm cuối API GET để tránh sử dụng thông số truy vấn hoặc URI có thể được ghi nhật ký?
Có thể chấp nhận sử dụng POST trong trường hợp này hoặc có cách sáng tạo khác không?
(Lưu ý: API này sẽ KHÔNG được tiếp xúc với bên thứ ba)

Trả lời

0

Nếu bạn đang sử dụng Apache như máy chủ web của bạn, bạn có thể sử dụng CustomLog để xóa/thay thế các giá trị nhạy cảm, this answer cung cấp một đoạn mã ví dụ.

+2

Vâng, bạn đã đúng, tuy nhiên, bây giờ tôi cần phải cụ thể hơn. Tôi muốn giải quyết vấn đề này từ quan điểm thiết kế API, thay vì tạo sự phụ thuộc vào nhóm hoạt động để nhớ KHÔNG sử dụng giá trị CustomLog để ghi lại các giá trị nhạy cảm. –

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