Tôi đang triển khai viết lại URL trong ASP.net và các URL của tôi đang khiến tôi trở thành một thế giới có vấn đề.Mã hóa URL ASP.Net
URL được tạo từ cơ sở dữ liệu của các phòng ban & danh mục. Tôi muốn nhân viên có thể thêm các mục vào cơ sở dữ liệu với bất kỳ ký tự đặc biệt nào là thích hợp mà không làm hỏng trang web.
Tôi đang mã hóa dữ liệu trước khi tôi tạo URL.
Có một số vấn đề ...
- IIS giải mã URL trước khi nó đạt .net làm cho nó không thể phân tích đúng bất cứ điều gì với một "/" trong đó.
- ASP.net bị nhầm lẫn bởi việc tạo url "~" vô dụng trong các trang nhất định
- Tôi di chuyển từ máy chủ thử nghiệm được xây dựng sang máy chủ IIS cục bộ (máy XP) và bất kỳ URL nào có mã hóa & (% 26) cho tôi lỗi "Yêu cầu không hợp lệ".
- UrlEncode để lại một số ký tự bị hỏng không bị chạm vào như '.'
Tôi đã có hai bài đăng liên quan khác về chủ đề này, tại thời điểm tôi chỉ thấy các vấn đề nhỏ không phải là vấn đề lớn ở thượng nguồn. Tôi đã tìm thấy một số thủ thuật đăng ký để giải quyết vấn đề "Yêu cầu không hợp lệ" nhưng tôi sẽ triển khai một môi trường lưu trữ được chia sẻ khiến việc đó trở nên vô ích. Tôi cũng biết rằng đây là một sửa chữa cho một số vấn đề an ninh vì vậy tôi không muốn nhất thiết bỏ qua nó mà không biết những gì có thể của sâu tôi đang mở.
Thay vì cố gắng buộc. Net chuyển cho tôi url thô hoặc ghi đè cài đặt IIS, tôi muốn tạo URL thực sự an toàn ngay từ đầu.
Tôi sẽ lưu ý rằng tôi đã thử AntiXss.URLEncode, HttpUtility.URLEncode, URI.EscapeDataString. Tôi thậm chí đã thử những thứ ngu ngốc như doubleEncodng. Có một tiện ích nào làm những gì tôi cần, hay tôi thực sự cần phải cuộn của riêng tôi. Tôi thậm chí còn đang cân nhắc việc làm một cái gì đó Hacky như thay thế% bằng một chuỗi ký tự khác thường. Kết quả cuối cùng nên ít nhất là có thể đọc được mà là điểm của việc sử dụng viết lại URL ở nơi đầu tiên.
Xin lỗi vì bài đăng dài- Tôi chỉ muốn đảm bảo rằng tôi đã bao gồm tất cả các chi tiết cần thiết. Tôi dường như không thể tìm thấy bất kỳ thông tin liên quan về điều này, và có vẻ như nó sẽ là một vấn đề phổ biến - vì vậy có lẽ tôi đang thiếu một cái gì đó lớn. Cảm ơn sự giúp đỡ của bạn, và kiên nhẫn với lời giải thích dài!
Chỉnh sửa cho rõ ràng:
Khi tôi nói các url đang được xây dựng từ một cơ sở dữ liệu những gì tôi có nghĩa là cấu trúc thư mục được contstructed từ các phòng ban và chuyên mục trong cơ sở dữ liệu của tôi.
Một số Ví dụ URL -
Mystore/lạnh/Bar + Fridge.aspx
Mystore/Nấu ăn + Equipment.aspx
Mystore/Bếp/Cắt + Boards.asxpx
Những vấn đề đi trong khi Tôi sử dụng một bộ phận như "Đồ uống & Bar" hoặc "Pastry/Decorating" để tạo URL của tôi. Mặc dù được mã hóa đầu tiên, những nguyên nhân này đã gây ra những vấn đề nói trên.
Trình xử lý của tôi đã được triển khai và hoạt động tốt ngoại trừ các vấn đề về mã hóa ký tự đặc biệt.
Trong sự quan tâm của toàn tiết lộ đây là posts- khác có liên quan của tôi http://stackoverflow.com/questions/1274669/ url-encoding-being-lost-before-processing-asp-net - Câu hỏi tương tự nhưng tôi đã cố gắng để buộc. net để cung cấp cho tôi URL gốc thay vì sửa mã hóa trên liên kết gốc. http://stackoverflow.com/questions/1194900/asp-net-path-problems-caused-by-encoded-urls Cố gắng khắc phục sự cố "~" trước khi tôi nhận ra rằng có vấn đề lớn hơn. –