asp.net-mvc – 如何设置AntiForgeryToken cookie路径
|
不推荐使用允许覆盖字符串路径的前 HtmlHelper.AntiForgeryToken方法. [ObsoleteAttribute("This method is deprecated. Use the AntiForgeryToken() method instead. To specify a custom domain for the generated cookie,use the <httpCookies> configuration element. To specify custom data to be embedded within the token,use the static AntiForgeryConfig.AdditionalDataProvider property.",true)]
public MvcHtmlString AntiForgeryToken(
string salt,string domain,string path
)
告诉您使用< httpCookies>.但是httpCookies Element没有PATH的设置. 这是对这种方法的弃用的疏忽吗?覆盖此cookie路径的最佳方法是什么? (手动?)在虚拟应用程序中运行网站不会隐式地将应用程序路径添加到__RequestVeririfcation cookie. 解决方法查看弃用消息:
它告诉我们,只要回读伪造令牌,我们就可以验证其他参数.因此,即使我们无法在cookie中设置路径,我们也可以将路径设置为令牌内的属性.稍后要验证它,例如: public class AdditionalDataProvider : IAntiForgeryAdditionalDataProvider
{
public string GetAdditionalData(HttpContextBase context)
{
return AdditionalData(context);
}
public bool ValidateAdditionalData(HttpContextBase context,string additionalData)
{
var currentData = AdditionalData(context);
return currentData == additionalData;
}
private static string AdditionalData(HttpContextBase context)
{
var path = context.Request.ApplicationPath;
return path;
}
}
当asp.net生成令牌时,它将存储该应用程序的当前路径(或您要验证的任何其他唯一值) 另外,查看AntiforgeryConfig.cs的代码,如果应用程序在虚拟目录中运行,它将默认在cookie的名称中添加该虚拟目录: private static string GetAntiForgeryCookieName()
{
return GetAntiForgeryCookieName(HttpRuntime.AppDomainAppVirtualPath);
}
// If the app path is provided,we're generating a cookie name rather than a field name,and the cookie names should
// be unique so that a development server cookie and an IIS cookie - both running on localhost - don't stomp on
// each other.
internal static string GetAntiForgeryCookieName(string appPath)
{
if (String.IsNullOrEmpty(appPath) || appPath == "/")
{
return AntiForgeryTokenFieldName;
}
else
{
return AntiForgeryTokenFieldName + "_" + HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(appPath));
}
}
所以它会是这样的: 意思是App2虽然可以从App1接收令牌,但它将无法读取它们,因为它只会查找App2验证令牌. HTH (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC中的Windows Live ID
- asp.net-mvc – ASP.NET MVC中的AntiForgeryToken是否防止所
- asp.net – 哪个控件导致回发?
- ASP.NET -- WebForm -- 页面生命周期事件
- Mono 3.4.1中的UserCookieAuthentication
- asp.net-mvc – 用于创建具有模型和ViewData项目的ViewData
- asp.net-mvc – 为什么.NET在MVC asp.net应用程序中生成两个
- asp.net – 如何通过LINQ获得第一级的孩子
- asp.net-mvc – ASP.NET MVC – 在哪里抛出异常?
- asp.net – 使用匿名访问在Sharepoint中读取Cookie的问题
- 如何使用ASP.NET在纯HTML页面上执行表单验证?
- 集成ASP.NET身份的最佳做法 – 它们是否存在?
- asp.net – 我可以在卫星装配中组合本地资源吗?
- asp.net-mvc – 如何根据设备类型更改ASP.NET MV
- 实体框架 – 实体框架核心更新许多对许多
- asp-classic – 在VBScript中检查NULL的错误
- asp.net – NullReferenceException在PipelineSt
- .net – 将HtmlTextWriter的内容转换为字符串
- asp.net – OutputCache和RenderAction缓存整个页
- asp.net-mvc – Html.CheckBox返回false如果禁用
