gpt4 book ai didi

asp.net - 如何在 ASP.net 中修改标签的 View 状态

转载 作者:行者123 更新时间:2023-12-02 15:39:17 24 4
gpt4 key购买 nike

我在某处读到可以修改 View 状态,但我没有找到实现它的步骤。

例如:我想修改标签的 View 状态,最初标签文本是“Hi..”,我想通过在回发时修改其 View 状态将其更改为“Hello”。

任何建议将不胜感激。

最佳答案

我猜您是在谈论作为最终用户恶意修改 __VIEWSTATE 隐藏字段,而不是从代码中修改 ViewState。这可能可行也可能不可行(希望不可行),具体取决于应用程序的某些设置。两个会让它变得非常困难的是 EnableViewStateMacViewStateEncryptionMode .这些通常设置在 <pages> 上Web.config 中的元素。

ViewStateEncryptionMode 并不是真正为防止 ViewState 篡改而设计的;它旨在隐藏您嵌入到 ViewState 中的任何内容。例如,如果您决定将一些关于您自己的 secret 信息添加到 ViewState(例如 ViewState["secretinfo"] = "My social security number is xxx-xx-xxxx.";),任何出现并加载您页面的用户都可以获取您的 __VIEWSTATE 字段并通过 base64 解码器运行它以查找您的社会保险号—当然,除非您正在加密 ViewState。

例如,here's a .aspx page I found通过简单的谷歌搜索。查看源代码,获取 ViewState,并将其粘贴到此 base64 decoder 中.在几个丑陋的字符中,你会发现一堆纯文本。这个 ViewState 显然没有被加密(这可能不是一件坏事)。

现在,如果您好奇或可能怀有恶意,您可能会尝试修改您在 ViewState 中找到的一些文本,将其重新编码为 base64,然后将其放回 __VIEWSTATE 字段中。 (在许多浏览器中,只需打开 JS 控制台并输入 document.querySelector("[name=__VIEWSTATE]").value = "whatever your base64 text is"; 即可。)现在,当您提交表单时,页面将返回修改后的 ViewState。

这就是 EnableViewStateMac 发挥作用的地方。正如 MSDN 所指出的,此设置应始终在生产站点上启用,因为这是旨在防止恶意人员篡改 __VIEWSTATE 字段的设置。过于简单化,它基本上计算 __VIEWSTATE 值的哈希值(实际上是 message authentication code )并将其与 __VIEWSTATE 一起发送。 (它嵌入在字符串的末尾,不会解码回漂亮的纯文本字符串。)如果您修改了 __VIEWSTATE 中的某些文本,消息将不再与 MAC 匹配,.NET 将捕获它并抛出在您有机会处理请求之前出现异常。

长话短说
只要启用了 EnableViewStateMac(您应该启用),就无法真正修改 __VIEWSTATE 字段。

关于asp.net - 如何在 ASP.net 中修改标签的 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com