2012-05-15 17 views
8

Chỉ cần tự hỏi nếu userId được trả lại bằng cách gọi số user.getUserId() có nên được coi là bí mật hoặc nó có thể được sử dụng trong các URL công cộng không? ví dụ: URL trang tiểu sử trông giống như http://example.com/userprofile/11901930903930 nơi 11901930903930 là userId do Google tạo trên Appengine.Người dùng Google Appengine có nên được coi là bí mật không?

Đây là chức năng chúng tôi đang sử dụng để có được những userId:

UserService userService = UserServiceFactory.getUserService(); 
User user = userService.getCurrentUser(); 

String id = user.getUserId(); 

Trả lời

11

Trên thực tế, tôi thấy thông tin này trên Google và kết luận là họ nên không được sử dụng công khai.

Từ Google:

Tiếp cận thông tin tài khoản

Trong khi một người dùng được đăng nhập vào một ứng dụng, các ứng dụng có thể truy cập vào địa chỉ email của tài khoản hoặc nhận dạng OpenID cho mỗi yêu cầu người dùng thực hiện để ứng dụng. Ứng dụng cũng có thể truy cập ID người dùng xác định người dùng duy nhất, ngay cả khi người dùng thay đổi địa chỉ email cho tài khoản của mình.

Ứng dụng cũng có thể xác định xem người dùng hiện tại có phải là quản trị viên ("nhà phát triển") cho ứng dụng hay không. Bạn có thể sử dụng tính năng này để xây dựng các tính năng quản trị cho ứng dụng, ngay cả khi bạn không xác thực người dùng khác. Các API Go, Java và Python giúp dễ dàng định cấu hình URL là "chỉ quản trị viên".

Lưu ý: Mọi người dùng đều có cùng một ID người dùng cho tất cả các ứng dụng App Engine. Nếu ứng dụng của bạn sử dụng ID người dùng trong dữ liệu công khai, chẳng hạn như bằng cách bao gồm ID đó trong thông số URL, bạn nên sử dụng thuật toán băm có giá trị "muối" được thêm vào để làm mờ ID. Việc hiển thị ID thô có thể cho phép người nào đó liên kết hoạt động của người dùng trong một ứng dụng với ứng dụng đó trong một ứng dụng khác hoặc nhận địa chỉ email của người dùng bằng cách ép buộc người dùng đăng nhập vào một ứng dụng khác.

Link to page

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