Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC AntiForgeryToken的验证问题_Asp.net_Asp.net Mvc_Antiforgerytoken - Fatal编程技术网

ASP.NET MVC AntiForgeryToken的验证问题

ASP.NET MVC AntiForgeryToken的验证问题,asp.net,asp.net-mvc,antiforgerytoken,Asp.net,Asp.net Mvc,Antiforgerytoken,所以我有一个有趣的问题。。。我需要让我的webapp通过IBM应用程序扫描设备,然后才能将更改推送到生产环境中。我的最新更改包括ASP.NET MVC中的AntiForgeryToken。我测试过的每个浏览器都工作正常,没有问题。但是当设备尝试提交表单时,它会收到一个验证错误。查看验证令牌,设备正在对post上的表单值进行html编码,因此字符串不匹配。。。这就是它们的样子: cmiuJRHizXLPvlu9zHKmTwdJiHvq+n87CSJZkixkf/BLHAYCPVITJHRCWWIR

所以我有一个有趣的问题。。。我需要让我的webapp通过IBM应用程序扫描设备,然后才能将更改推送到生产环境中。我的最新更改包括ASP.NET MVC中的AntiForgeryToken。我测试过的每个浏览器都工作正常,没有问题。但是当设备尝试提交表单时,它会收到一个验证错误。查看验证令牌,设备正在对post上的表单值进行html编码,因此字符串不匹配。。。这就是它们的样子:

cmiuJRHizXLPvlu9zHKmTwdJiHvq+n87CSJZkixkf/BLHAYCPVITJHRCWWIRPWG-从cookie中提取 cmiuJRHizXLPvlu9zHKmTwdJiHvq%2Bn87CSJZkixkf%2FBLHAYCPVITJHRCWWIRPWG-表单值


所以它将+转换为%2B和/或%2F。。。以前有人见过这个吗?这是客户端浏览器的问题吗?有没有让AntiForgeryToken生成一个没有特殊字符的字符串,这样我就可以通过这次扫描获得我的应用程序?谢谢

查看MVC代码,它似乎正在使用RNGCryptoServiceProvider创建令牌。有趣的是,他们有一个方法可以替换对cookie名称不安全的字符(基本上是“+”和“/”,正如你在问题中指出的),但它被标记为private,我不知道在哪里使用它

不幸的是,您不能从AntiForgeryData类派生您自己的类,因为它是密封的。这是非常可悲的,因为这显然是解决你问题的办法


您可以基于MVC代码创建一个新属性,并自己使用安全方法。它将违反DRY,但我看不到解决方法,因为Microsoft密封了该类。

查看MVC代码,它似乎在使用RNGCryptoServiceProvider创建令牌。有趣的是,他们有一个方法可以替换对cookie名称不安全的字符(基本上是“+”和“/”,正如你在问题中指出的),但它被标记为private,我不知道在哪里使用它

不幸的是,您不能从AntiForgeryData类派生您自己的类,因为它是密封的。这是非常可悲的,因为这显然是解决你问题的办法


您可以基于MVC代码创建一个新属性,并自己使用安全方法。这将违反DRY,但我看不到解决方法,因为微软已经封存了该类。

微软在MVC框架中封存了大量可能不应该封存的类。我总是觉得这很奇怪。我很想离开它。。。我还没有一个真正的浏览器对此有问题,我猜ibm设备正在做一些非标准的傻事。Microsoft在MVC框架中封装了大量可能不应该存在的类。我总是觉得这很奇怪。我很想离开它。。。我还没有一个真正的浏览器对此有问题,我猜ibm设备正在做一些非标准的傻事。