Рассмотрите ссылку на страницу для профиля пользователя. Страница создает этот адрес, как это:ASP.NET MVC - создание и обработка URL с большим и меньшим количеством символов
//Model.Name has value "<bad guy>"
Html.ActionLink("foo, "ViewUser", new { id=5, title=Url.Encode(Model.Name) })
Фактический результат был
http://mysite/Users/5/%253cbad%2guy%253e
При переходе на этот URL, сервер генерирует HTTP Error 400 - Bad Request.
Проблемные поверхностей при тестировании из «интересно 'пользовательские входы с <
и >
, но все может исходить от пользователя и поэтому должно быть помещено в URL-адрес посредством Model.Name
.
Вопрос: Учитывая, что Model.Name
может содержать символы Unicode, или символы, в противном случае незаконные в адресах:
- что лучший способ вырезать недопустимые символы, или иным образом кодировать их?
- следует ли дезинфицировать вход пользователя перед тем, как быть сохраненным в базе данных, тем самым предотвращая попытку кодирования выше?
- какие символы должны быть подвергнуты санитарной обработке (то есть недопустимы), когда вы думаете, что эта строка является частью URL-адреса?
См http://stackoverflow.com/questions/1228701/code-for-decoding -encoding-a-modified-base64-url для хорошего примера использования кодировки base 64 ... и декодирования – w4ik