Вопрос

Так что у меня есть интересная проблема ... Мне нужно заставить свой веб -приложение пройти через приложение IBM приложения, прежде чем я смогу ввести свои изменения в производство. Мои последние изменения включают AntiforgeryToken в ASP.NET MVC. Каждый браузер, на котором я протестировал это, работает отлично, нет проблем. Но когда устройство пытается отправить форму, он получает ошибку проверки. Глядя на токен проверки, устройство делает HTML -кодирование на значении формы на сообщении, поэтому строки не совпадают ... это то, что они выглядят: они выглядят:

cmiujrhizxlpvlu9zhkmtwdjihvq+n87csjzkixkf/blhaycpvitjhrcswirpwg - вытащился из cookie cmiujrhizxlpvlu9zhkmtwdjihvq%2bn87csjzkixkfmthayhlihljhayhlihlj

Так что он переводит + на %2b и / до %2f ... кто -нибудь видел это раньше? Это проблема для клиентских браузеров? И есть ли AntiforgeryToken Generate строка, у которой нет особых символов, чтобы я мог получить свое приложение через это сканирование? Спасибо!

Это было полезно?

Решение

Глядя на код MVC, кажется, что он использует rngcryptoserviceprovider для создания токена. Интересно, что у них есть метод, который заменяет символы, которые небезопасны для имен cookie (в основном «+» и «/», как вы указали в своем вопросе), но он помечен как частное, и я не вижу, где он используется.

К сожалению, вы не можете получить свой собственный класс из класса AntiforgeryData, потому что он запечатан. Это очень грустно, потому что это было очевидным решением вашего вопроса.

Вы можете создать новый атрибут на основе кода MVC и самостоятельно использовать метод безопасности. Это нарушит сухой, но я не вижу пути, так как Microsoft запечатала класс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top