ASP.NET视图状态加密问题

2024-02-07

我正在尝试打开视图状态加密Always作为我在 IIS6 中托管的 ASP.NET 3.5 网站的安全措施。我们已关闭视图状态,但仍在此字符串中看到一些“控制状态”。在测试环境中,我可以简单地在 web.config 中设置以下内容,并且我无法再以 Base64 将视图状态解码为半明文:

<pages enableViewState="false" enableViewStateMac="true" viewStateEncryptionMode="Always">

我什至添加了以下内容(由机器密钥生成器 http://aspnetresources.com/tools/machineKey)到 machine.config 并仍然对我的测试服务器上的视图状态进行加密:

<machineKey validationKey="002..." decryptionKey="D90E..." validation="SHA1" decryption="AES" />

我的非测试环境似乎没有接受上述更改,因为我始终可以使用上述设置将视图状态进行 Base64 解码为纯文本。我总是在进行任何更改后重置。

有关我的非测试网络服务器的一些信息:

  • Web Farm/负载平衡(但目前只有一台服务器用于测试)
  • Sql 会话状态(最初需要 machine.config 中的 machinekey 来设置)
  • machine.config:部署零售=“true”

任何人都可以建议在哪里寻找可能干扰 ASP.NET 视图状态加密的其他设置吗?

编辑:现在在我的 iis 测试服务器上,我无法撤消 viewStateEncryptionMode 设置,因为它正在加密视图状态,即使我将其设置为“从不”,而且我的其他网站似乎都没有保留此设置。我可以在哪里查看该属性被覆盖的位置?除了 iisreset/stop www service/touch machine.config 时执行的操作之外,是否还有存储此设置的缓存需要清除?

编辑最终:经过几天的研究配置文件后,我放弃并通过代码实现了这一点。我已经有一个附加到页面事件的安全模块,因此在 Page_Load 中我添加了: Page.RegisterRequiresViewStateEncryption();

我真的很想知道是什么阻止了 IIS6 立即采用此设置。当我在本地运行 cassini 时,如果我通过页面节点将 viewStateEncryptionMode 设置为“Always”,我会立即看到它对视图状态进行编码并使用 id="__VIEWSTATEENCRYPTED" 渲染附加隐藏字段。当我将其设置为“从不”时,我会立即看到加密关闭。如果我对 IIS6 托管网站上的网站进行同样的更改,它不会立即生效,但如果我允许设置保留在那里,它最终会生效。我会停止/启动 www 服务、重置 iis、清除 ASPNET 临时缓存,但我不知道还能尝试什么?希望这篇文章可以烂掉一段时间,将来有人会看到我经历过的相同行为,我们可以进一步弄清楚这一点!


我知道您发布此文章已经有一段时间了,但是您是否考虑过自己实现 PageStatePersister? PageStatePersister 是负责格式化页面中嵌入的 ViewState 和 ControlState 数据的组件。如果安全性是您最关心的问题,您可以使用任何您想要的加密算法来确保您的数据保持私密性。根据您的配置,听起来您处于一个功能相当强大的环境中,因此显然首先要进行负载测试。还值得一提的是,当合并到“经典”ASP.NET WebForms 站点中时,我对 MVC 在 ViewState 中的分层参与一无所知或没有经验。

祝你好运。

B

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

ASP.NET视图状态加密问题 的相关文章

随机推荐

  • 如何在JW播放器中添加自定义提示点

    假设我有一系列以秒为单位的时间 var points 5 30 50 因此 当 jw 播放器初始化时 我想读取这个数组 然后在时间轴上放置提示点 标记 一旦搜索栏到达提示点 我想调用一个执行某些操作的自定义函数 Jw 的文档非常简单 但我发
  • 无法在 Emacs 中启动 `lein` REPL

    在 Emacs 中 使用时clojure mode 我应该能够启动 REPLC c C z 但每当我尝试时 我都会收到错误 Searching for program no such file or directory lein I hav
  • 删除Git lfs链接到文件并直接添加到git

    我需要删除 Git LFS 文件指针 并将文件直接添加到 Git 我在 gitattributes 中有一个过滤器来匹配某些文件 test py filter lfs diff lfs merge lfs text 如何修改它以从此模式中排
  • 如何将 Terser 与 webpack 结合使用

    我在用网页包 6 10 2 with Vue 3 9 3 此安装使用 Uglify js 当我运行时会引发错误npm run build因为它不能与 ES6 一起工作 为了解决这个问题 我删除了 Uglify 表单webpack confi
  • Mac/Cocoa:在我的应用程序中嵌入终端窗口

    有人发现是否可以将终端实例 嵌入 到应用程序中 如果它也继承了选项卡功能和拖放功能 那就太棒了 我在这里看到了几个类似的问题提到iTerm http iterm sourceforge net 但似乎应该有一个更简单的方法 就像 NSTer
  • RxJava:结合冷热观察来相互等待

    我的可观察量是这样定义的 val initLoading Observable fromCallable println System currentTimeMillis subscribeOn Schedulers computation
  • 等待 selenium 中的特定 URL

    我需要在 Chrome 浏览器中使用 Selenium 等待网站自动化中的特定 URL 用户将在我们的网站上进行在线支付 从我们的网站 用户被重定向到支付网关 当用户完成支付后 网关将重定向到我们的网站 我想收到从网关到我们网站的重定向通知
  • CMS编辑方案

    我只是想知道是否有一些方案是编辑 CMS 如 Wordpress Joomla 等 的正确方法 正确步骤 我所说的编辑是指 css javascript 到目前为止 我所做的方法是创建 custom css 和 custom js 等文件
  • 我可以在 React 应用程序中但在 React 组件之外安全地执行 DOM 操作吗?

    我正准备做我的第一个 React 项目 我的阅读已经很清楚地表明我需要让 React 处理所有使用虚拟 DOM 的渲染 并且我不应该执行任何会干扰虚拟 DOM 计算 然而 我无法弄清楚的是 假设我在包含其他 HTML 的页面中的 div a
  • 如何在R中组合多个数据框列

    我有一个 csv 文件 其中包含参与者的人口统计数据 数据是从我的研究数据库 REDCap 中编码和下载的 每个种族都有自己单独的列 也就是说 每个参与者在每一列中都有一个值 如果认可则为 1 如果未认可则为 0 它看起来像这样 SubjI
  • 如何使用自定义消息 git stash 存储未跟踪的文件?

    我该如何表现git stash include untracked带有自定义消息 我试过了 git stash include untracked message Foo and git stash Foo include untracke
  • Python 的 url 请求超出了最大重试次数

    我正在尝试抓取此页面 我使用的代码是这样的 page get https www uobgroup com online rates gold and silver prices page 当我运行此代码时出现此错误 Traceback m
  • Sharpssh 目录列表

    我正在编写一个应用程序 允许我从远程服务器上传和下载文件 我使用 sftp 作为传输协议 我需要将所有文件和目录列出到列表视图中 我使用 Sharpssh 作为 sftp 有人能指出我正确的方向吗 感谢转发 巴斯 范 乌延 Sftp sft
  • Android:前台服务与wakeLock

    我对 Android 比较陌生 所以我问的问题可能看起来很明显 尽管我已经阅读了所有类似标题的问题 并且进行了广泛的搜索 我需要长时间连续监控加速度计 建议采用两种方法 1 获取在加速器被监控的整个过程中保持的部分唤醒锁 和 2 在前台服务
  • 在 Apache 和 WSGI 上部署 Django

    虽然我找到了很多使用 WSGI 在 Apache 上部署 Django 的技术支持 但不幸的是 事实上它们都让我感到困惑 我无法让 Django 运行 我希望这真的是一件容易的工作 但作为一个新人 我面临着困难 我的里面有两个 Django
  • PInvoke、指针和数组复制

    我们正在 c net 4 0 Win7 x64 上构建一个应用程序 目标为 x32 我们在我们的应用程序中使用第三方库 我们知道这个库是用C 编写的 然而 为了让 c 开发人员使用这个库 他们使用 P Invoke 对其进行了包装 这就是我
  • VS2019 中 ASP.NET Core 2.2 项目中的分析器警告

    我基本上有一个从默认 Razor Pages 模板创建的默认 ASP NET Core 2 2 项目 现在 在解决方案资源管理器 gt 依赖项中有一个名为 Analyzers 的节点 首先 一开始我并不知道它是用来做什么的 我想我现在知道了
  • 使用 live() 进行验证并通过 ajax() 提交

    我在 JQuery 中有这个 form validate rules captcha required true remote url gb include captcha php type post messages captcha Co
  • 如何使按钮在引导程序中响应?

    我有这个代码
  • ASP.NET视图状态加密问题

    我正在尝试打开视图状态加密Always作为我在 IIS6 中托管的 ASP NET 3 5 网站的安全措施 我们已关闭视图状态 但仍在此字符串中看到一些 控制状态 在测试环境中 我可以简单地在 web config 中设置以下内容 并且我无