Có đủ để bảo mật một trang trạng thái đơn hàng chỉ bằng một URL ngẫu nhiên không?


11

Sau khi một khách hàng (công ty) mua một số mặt hàng trong cửa hàng trực tuyến của chúng tôi, chúng tôi gửi email với một cái nhìn tổng quan về những gì anh ta đã mua cho anh ta.

Chúng tôi muốn thông báo cho khách hàng của mình về các khoản thanh toán đã nhận, theo dõi gói, v.v. Tôi sẽ giải quyết vấn đề này bằng cách chỉ định cho mỗi đơn hàng một ID ngẫu nhiên và thêm một liên kết vào mỗi thư. Liên kết có thể như thế này: http://shop.foo.bar/order/rwklvc46g9wt7kvy09f1

Bạn sẽ có biện pháp bổ sung để bảo vệ dữ liệu? Hoặc chọn một giải pháp hoàn toàn khác?

Ưu điểm:

  • không cập nhật trạng thái liên tục trên mỗi thư (đặc biệt nếu cập nhật thường xuyên xảy ra)
  • nguồn thông tin duy nhất (không bao giờ lỗi thời)
  • có thể chia sẻ (ví dụ với sếp hoặc đồng nghiệp của mình)

Nhược điểm:

  • dữ liệu riêng tư được hiển thị trên trang web có thể truy cập công khai (ví dụ: số điện thoại, chi tiết thanh toán)

4
Xin chào, chào mừng bạn đến với Webmaster. Bạn dường như đã tạo ra hai người giống hệt nhau và thay đổi nội dung câu hỏi của bạn với (?) Khác "Dan" - vì điều này nó nằm trong một chờ phê duyệt hàng đợi. Người dùng đặt câu hỏi luôn có thể tự do chỉnh sửa câu hỏi của họ và đưa ra nhận xét về câu trả lời, v.v ... "Dan" khác không có đủ danh tiếng để thực hiện một trong những điều này - vì họ không đặt câu hỏi.
MrWhite

Câu trả lời:


8

Không có an toàn bổ sung, không. URL ngẫu nhiên được thu thập tất cả các thời gian. Tuy nhiên, điều này là tốt khi được thực hiện với một trang đăng nhập để xác thực người dùng.

Một giải pháp trung gian là đảm bảo trang trạng thái không chứa dữ liệu cá nhân, chỉ có thông tin chung. Ví dụ: 'TRẢ TIỀN B CCNG CC thay vì' TRẢ TIỀN bởi VISA 1234567891 'và' Đã giao hàng 'thay vì' Giao hàng đến John Doe, 123 Blue Street ', v.v.


0

Tôi nghĩ bạn nên bảo vệ dữ liệu đó nhiều hơn. Đối với sự đơn giản của hệ thống, tôi rất đồng ý rằng các URL công khai với một chuỗi ngẫu nhiên và duy nhất là đủ và tiện dụng.

Tuy nhiên, nếu các phương thức thanh toán (bao gồm thông tin thẻ tín dụng), email hoặc điện thoại sẽ được hiển thị, ngay tại đó bạn có nhu cầu bảo vệ dữ liệu đó. Nó cũng phụ thuộc vào một phần của thế giới, nhưng trong hầu hết chúng, nhu cầu này mở rộng đến các vấn đề pháp lý và bảo vệ dữ liệu của người dùng.

Những gì hầu hết các trang web mua sắm làm cho loại tình huống này là yêu cầu thông tin đăng nhập (đăng nhập / mật khẩu) hoặc số theo dõi với mã theo dõi hoặc thứ gì đó mà chỉ các bên đáng tin cậy của người dùng hoặc người dùng có thể có.


-1

Vâng, nó không đủ miễn là:

  1. bạn chỉ cần gửi liên kết qua email và không gửi nó cho Google. Nhưng theo câu hỏi của bạn thì đây là những gì bạn làm, vì vậy không có cách nào để Google biết được liên kết vì nó sẽ không bao giờ được lập chỉ mục / thu thập dữ liệu.

  2. bạn tạo ID được sử dụng trong liên kết ngẫu nhiên và dài một cách hiệu quả. Nếu không phải là ngẫu nhiên, nhưng bạn sử dụng số nguyên gia tăng đơn giản làm ID, một trong những khách hàng của bạn có thể dễ dàng nhận ra rằng bằng cách nhập các số đơn giản tăng dần trong liên kết, anh ta có thể đọc tất cả các đơn đặt hàng khác. Nếu nó ngẫu nhiên, nhưng không đủ dài (giả sử chỉ có 4 chữ số / chữ cái) thì sẽ dễ dàng ngay cả với một máy tính gia đình để tấn công đơn đặt hàng của bạn, tôi chỉ cần thử (26 + 10) ^ 4 = 1.679.616 kết hợp có thể. Giả sử tôi chạy một tập lệnh kiểm tra một liên kết mỗi giây, nó sẽ mất tới 20 ngày để xử lý tất cả các liên kết có thể và đọc tất cả các đơn đặt hàng của bạn.

  3. QUAN TRỌNG: để tăng tính bảo mật, bạn nên xóa liên kết sau một số ngày nhất định (nghĩa là sau 1 tháng). Đây là mẹo để làm cho nó an toàn. Theo cách này, ngay cả khi ai đó cố gắng vũ trang các liên kết của bạn, anh ta sẽ cần sức mạnh calc lớn nếu không cuộc tấn công của anh ta sẽ không bao giờ đủ nhanh để thử tất cả các kết hợp có thể trước khi chúng bị xóa. Và ngay cả khi anh ta có một sức mạnh calc khổng lồ, anh ta sẽ khó có thể kiểm tra nhiều hơn một liên kết mỗi giây bởi vì máy chủ xử lý các đơn đặt hàng của bạn có thể bắt đầu từ chối kết nối của anh ta nếu anh ta cố gắng kết nối liên tục mỗi giây. FYI: xóa liên kết, không có nghĩa là bạn phải xóa tất cả thứ tự trong DB. Bạn có thể sử dụng một khóa chính khác cho bảng đơn hàng (int tự động đơn giản) và bạn có thể sử dụng trường UNIQUE (cho phép NULL) được gọi là link_id, đó là trường bạn nhập trong liên kết. Sau một tháng, bạn chỉ cần xóa giá trị của link_id và đặt NULL. Theo cách này, thứ tự sẽ vẫn ở trong bảng và có thể xem được từ bảng quản trị của bạn, nhưng liên kết trực tiếp sẽ không còn hiệu lực để xem trực tiếp trang đặt hàng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.