Рассмотрим ссылку на страницу для профиля пользователя. Страница создает этот 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-адресах:
- Каков наилучший способ вырезать недопустимые символы или иным образом кодировать их?
- должен ли ввод пользователя очищаться перед сохранением в базе данных, тем самым предотвращая попытку кодирования выше?
- какие символы должны быть обработаны (т.е. не разрешены), когда вы думаете, что эта строка должна быть частью URL?