Nếu mục tiêu đó để ngăn chặn các URL "tĩnh" không bị thao túng, sau đó bạn có thể chỉ cần mã hóa các thông số, hoặc đăng ký chúng. Nó có khả năng "an toàn đủ" để tack trên một MD5 của các tham số URL, cùng với một số muối. Muối có thể là một chuỗi ngẫu nhiên được lưu trữ trong phiên, nói.
Sau đó, bạn có thể chỉ:
http://example.com/service?x=123&y=Bob&sig=ABCD1324
Kỹ thuật này cho thấy nhiều dữ liệu (ví dụ: họ có thể "nhìn thấy" rằng xyz = 123), nhưng họ không thể thay đổi dữ liệu.
Có một lợi thế là "mã hóa" (và tôi sử dụng thuật ngữ đó một cách lỏng lẻo). Đây là nơi bạn mã hóa toàn bộ phần tham số của URL.
đây bạn có thể làm điều gì đó như:
http://example.com/service?data=ABC1235ABC
Những điều tốt đẹp về việc sử dụng mã hóa là hai lần.
Một chế độ bảo vệ dữ liệu (người dùng không bao giờ có thể thấy xyz = 123 chẳng hạn).
Các tính năng khác tho là nó có thể mở rộng:
http://example.com/service?data=ABC1235ABC&newparm=123&otherparm=abc
Ở đây, bạn có thể giải mã các tải trọng ban đầu, và làm một (an toàn) kết hợp với các dữ liệu mới.
Vì vậy, các yêu cầu có thể THÊM dữ liệu cho yêu cầu, không thay đổi dữ liệu EXISTING.
Bạn có thể thực hiện tương tự thông qua kỹ thuật ký, bạn chỉ cần hợp nhất toàn bộ yêu cầu vào một "đốm" đơn lẻ và blob đó được ký hoàn toàn. Đó là "hiệu quả" được mã hóa, chỉ là một mã hóa yếu.
Rõ ràng bạn không muốn làm bất kỳ điều này trên máy khách. Không có vấn đề gì.Nếu bạn có thể làm điều đó, "họ" có thể làm điều đó và bạn không thể nói sự khác biệt, vì vậy bạn cũng có thể không làm điều đó - trừ khi bạn muốn "mã hóa" dữ liệu qua cổng HTTP bình thường (so với TLS, nhưng sau đó folks sẽ khôn ngoan tự hỏi "tại sao bận tâm").
Đối với Java, tất cả công việc này đều có trong Bộ lọc, đó là cách tôi đã làm. Sự kết thúc trở lại được phân lập từ này.
Nếu muốn, bạn có thể làm cho phần cuối được phân lập hoàn toàn khỏi bộ lọc này với bộ lọc gửi đi xử lý mã hóa/ký tên URL trên đường ra.
Đó cũng là những gì tôi đã làm.
Mặt trái là nó rất có liên quan để làm cho nó đúng và hiệu suất. Bạn cần một trình phân tích cú pháp HTML trọng lượng nhẹ để kéo ra các URL (tôi đã viết một trình phân tích cú pháp phát trực tuyến để thực hiện điều đó khi nó không sao chép toàn bộ trang vào RAM).
Mặt tươi sáng là tất cả mặt nội dung "chỉ hoạt động", vì họ không biết gì về nó.
Ngoài ra còn có một số xử lý đặc biệt khi giao dịch với Javascript (vì bộ lọc của bạn sẽ không dễ dàng "biết" nơi có URL để mã hóa). Tôi đã giải quyết vấn đề này bằng cách yêu cầu các url được ký là "var signedURL = '....'" cụ thể, vì vậy tôi có thể dễ dàng tìm thấy các url đó trong đầu ra. Không phải là nghiền một gánh nặng cho các nhà thiết kế như bạn nghĩ.
Mặt sáng khác của bộ lọc là bạn có thể tắt nó. Nếu bạn có một số "hành vi kỳ quặc" xảy ra, chỉ cần tắt nó đi. Nếu hành vi tiếp tục, bạn đã tìm thấy một lỗi liên quan đến mã hóa. Nó cũng cho phép các nhà phát triển làm việc trong văn bản thuần túy và để lại mã hóa để thử nghiệm tích hợp.
Đau phải làm, nhưng cuối cùng thì thật tuyệt.
Nếu bạn đăng từ một biểu mẫu, các thông số sẽ không là một phần của URL – DwB
đó là lý do tại sao dwb nói "post" –
Như tôi hiểu nó obfuscation là khi dữ liệu được ẩn do phức tạp (chẳng hạn như ROT13 hoặc XOR hoạt động), mã hóa là khi bạn phải biết bí mật để truy cập dữ liệu. –