ViewStateUserKey + 共享托管 + ViewStateMac 验证失败

2023-12-08

所以,问题很简单,尽管我开始怀疑这是否会得到解答......

我有一个网站,我想在其中使用推荐的 ViewStateUserKey 来保护我的视图状态。

在我的基页(显然继承自 Page)中,我有以下代码:

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        if (User.Identity.IsAuthenticated)
            base.ViewStateUserKey = Session.SessionID;
    }

在本地主机上运行良好,但是,当我将其上传到托管(由我们本地提供商之一提供的共享托管)时,它会在我进行身份验证后给出传统的“视图状态 MAC 验证失败”错误。如果我注释掉这段代码,它会完美地工作,所以我 1000% 确定这就是原因。

在共享主机上执行视图状态安全的最佳方法是什么?我也已经设置了 ViewStateMac="Enabled" 。是否足够或者建议的解决方法是什么?


从在本地主机上而不是在服务器上播放的那一刻起,在我看来,您的会话存在一些问题,并且会话 ID 在您的服务器上快速更改/过期,比身份验证过期更快。

因此,从用户看到页面到发布页面,会话已过期或在身份验证更改之前发生更改,因此会话 ID 不同,因此您会收到此错误。

其他认为你可以看的是你已经设置了machineKey在 web.config 上。

Update

将您的代码与您编写的斯科特代码进行比较。 Scott 使用用户名,根本不会改变,而你使用 sessionid,正如我所说,它可以改变。

对我来说,以太使用斯科特建议的内容,用户名,以太一些其他也不会改变的值,例如用户的cookie,那不是那么容易改变的。

所以来自斯科特http://www.hanselman.com/blog/ViewStateUserKeyMakesViewStateMoreTamperpressive.aspx

void Page_Init (Object sender, EventArgs e)
{ 
   if (User.Identity.IsAuthenticated)
      ViewStateUserKey = User.Identity.Name;
}

这就是斯科特检查用户是否经过身份验证的原因,因为它获取了他的名字。如果您使用sessionid或用户的cookie,则不需要检查是否经过身份验证。

现在,如果您使用 cookie 在 vi​​ewstateuserkey 上设置它们,那么对于所有不允许 cookie 的用户,并尝试发布任何帖子都会出错。所以想一个像这样的解决方案来处理它们

https://stackoverflow.com/a/2551810/159270

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViewStateUserKey + 共享托管 + ViewStateMac 验证失败 的相关文章

随机推荐

  • ContextMenu 命令绑定到父级和自身

    我正在尝试在具有多个命令绑定的 DataGrid 上创建一个上下文菜单 有些必须绑定到本地 ViewModel 即 Row 的 ViewModel 有些必须绑定到父 ViewModel 到目前为止 我没有运气遵循其他解决方案 我只执行子命令
  • keyup、keydown、keypress 和 input 事件之间有什么区别?

    我一直在尝试理解 JavaScriptkeypress keydown keyup and input事件 但我发现它们很令人困惑 有人可以指出确切的差异吗 我还想知道当用户粘贴一段文本时是否会触发所有这些操作 根据jQuery 文档 Th
  • 在android中的谷歌地图上绘制多个标记

    我是android领域的新手 我写了一个安卓应用1将从网络提供商检索纬度和经度值并将其存储在我的本地服务器 LAMP 中 我还创建了一个 MYSQL DB 表 该表有 3 列 lat lon id 其中包含使用网络提供程序检索的值 lat
  • 为什么即使没有任何类声明也需要原型?

    如果我只是这样做 Ex1 include
  • 为什么我会收到 301 重定向到带有斜杠的文件夹名称?

    请求http localhost SAMPLE CODES backbone mysql reading json websites 被重定向如下 gt Request URL http localhost SAMPLE CODES bac
  • 单选按钮 onclick 不起作用

    我有 3 个单选按钮 将根据单击的按钮显示列表中的某些作业 我曾经使用搜索按钮来运行搜索代码 因此 用户将选择一个单选按钮 然后单击搜索 但现在我已经删除了搜索按钮 我希望单选按钮在单击时调用搜索功能 table tr td td tr t
  • 如何使用 Byte Buddy 更改导入?

    我想更改类的导入 以便它们指向不同的包 Byte Buddy 文档没有提供太多关于如何实现这一目标的信息 这是我到目前为止所拥有的 public class ProxyPlugin implements net bytebuddy buil
  • 限时输入? [复制]

    这个问题在这里已经有答案了 我希望能够做的是使用输入向用户询问问题 例如 print some scenario prompt input You have 10 seconds to choose the correct answer n
  • 使用 fileConfig 在 Python 中配置自定义处理程序

    我正在使用配置文件在 Python 应用程序中配置我的记录器 这是文件 loggers keys root logger root level INFO handlers console handlers keys console file
  • 在 SSRS 中分组?

    我是 SSRS 的新手 数据如下所示 它们都来自同一个数据集 就像将 2 列分组一样 即 WrkCrtId Name 显示在它们之上 我已经尝试了一些方法来做到这一点 但仍然失败 我想知道是否有人可以提供帮助 附注下图显示了 2 组 B3
  • 在.NET 6控制台应用程序中读取appsettings.json文件

    如何从appsettings json NET 6 控制台应用程序中的文件 program cs file public class Program private static ManualResetEvent quitEvent new
  • 如何在 Ant 中从逗号分隔的目录列表创建文件集?

    在 Ant 目标中 我获得一个属性 其中包含要包含在进一步操作 复制 过滤等 中的目录列表 它看起来像这样 directories dir1 dir2 dir3 我需要一种方法将此列表转换为选择的文件集或模式集all这些目录中的文件 我知道
  • 转换错误:需要左值作为赋值的左操作数

    所以我正在尝试使用ether aton 它返回一个struct ether addr 我正在尝试将其放入我的struct ether header eptr 来自 net ethernet h ether shost成员 我试过这个 str
  • swift3 日期到数据,数据到日期转换

    我正在努力将 Objective C 中创建的代码更改为 swift3 我想将下面的代码更改为使用 Objective c 创建的 swift3 代码 Objective c NSDate 到 NSData 代码 NSCalendar ca
  • 如何使用 PDFBox 对动态创建的 PDF 文档进行数字签名?

    对不起 我java很差 我哪里不对的地方请指正 我哪里不好的地方请改进 我正在尝试使用 PDFBox 通过以下程序对动态创建的 pdf 进行数字签名 计划中的任务 i 创建 PDF 模板 ii 更新 ByteRange xref start
  • 如何在构建阶段使用其他小部件的约束和大小

    我想确保涵盖所有情况 父窗口小部件读取 并可能使用 子窗口的大小或约束 子部件读取 并可能使用 父部件的大小或约束 子部件读取 并可能使用 另一个子部件的大小或约束 解决方案似乎是 让构建阶段运行 然后构建我想要从中检索数据的小部件的大小和
  • 本地通知?

    我的应用程序主要是服务器的客户端 实际上没有连接到互联网 它连接到 Polycom 编解码器并管理 2 个端点之间的视频通话 所以我的应用程序可以发送诸如结束通话 调高音量等命令 然而我的问题是这样的 当有来电并且应用程序不在前台时 我需要
  • Next.js Firebase 托管 404 错误(除 index.html 外)

    我构建了一个 nextjs 应用程序npm run build npm run export并使用部署到 firebasefirebase deploy命令 在此之前 我曾经使用过firebase init在我的项目文件夹中 仅使用默认选项
  • 如何将电子邮件建议传递到 Azure AD B2C 注册页面

    有没有办法在自定义策略中建议注册电子邮件 我的一些用户只需要通过邀请电子邮件进行注册 我在文档中看到 https learn microsoft com bs latn ba azure active directory b2c direc
  • ViewStateUserKey + 共享托管 + ViewStateMac 验证失败

    所以 问题很简单 尽管我开始怀疑这是否会得到解答 我有一个网站 我想在其中使用推荐的 ViewStateUserKey 来保护我的视图状态 在我的基页 显然继承自 Page 中 我有以下代码 protected override void