English 中文(简体)
如何修改 ASP. net 中标签的查看状态
原标题:How to modify viewstate of a label in ASP.net
  • 时间:2012-05-28 14:15:06
  •  标签:
  • asp.net

我在一个地方读到,它有可能改变观察状态, 但我没有找到实现它的步骤。

例如: 我想修改标签的视图状态, 最初易读文本是“ hi. ” 。 我想修改后退时的视图状态, 将其修改为“ hello ” 。

如有任何建议,将不胜感激。

问题回答

我猜你是在说恶意修改...VIEWSTATE 隐藏字段的终端用户, 而不是从代码中修改“ 视图状态” 。 这可能可行, 也可能不可行( 希望不可行 ), 取决于您的一些应用程序设置 。 要让它变得相当困难的是 < href=" http://msdn. microft.com/ en- us/ library/ system. plage. aspx" rel= “noforce” >Vib. ui. en- us/libraviewstatemac. aspx" rel= “ noform. page. enableviewviewstatemac. aspx” relus/library/ 950x. aspx “ relstatecregypolation. preview statenationMode 。 这些常设置在 < a hresdf= " webal. acode " in. scoppol.

ViewStateEncryprymode 并不是为了防止查看国的篡改,而是为了掩盖你在查看国嵌入的内容。例如,如果你决定向查看国添加一些关于你自己的秘密信息(例如,ViewState["secretinfo"]=“我的社会保障号码是xxxxxxxxxxxxxx;),那么,任何用户只要出现并装入您的页面,都可以使用您的 viewstate 字段, 并通过一个基础64 解码器运行, 查找您的社会保障号码 — 当然, 除非您重新加密查看国 。

例如,.aspx 页面。 查看源, 抓住视图状态, 粘贴到此 < a href=> http://www. base64decode. org/" rel="nofolf" > base64 decoder 。 在几个丑陋的字眼中, 您可以找到一堆简单的文字。 这个视图状态显然没有加密( 这可能不是坏事 ) 。

现在,如果你是一个好奇或可能是恶意的人, 你可以尝试修改在 View State 中找到的一些文本, 重新编码为 base64, 并将其重新输入 viewstate 字段 。 (在许多浏览器中, 只要打开 JS 控制台, 并输入 document.querySelector ("[nameVIEWSTATE]]") 。 值 = “ 无论你的 bas64 文本是什么 ” ; 。) 现在, 当你提交表格时, 页面会与修改的查看国一起回传 。

这是“强势” Enable ViewStateMac Message 认证代码 < /a>) 。 ( 它嵌入字符串末尾, 并不会将它解码到一个漂亮的纯文本字符串 。 ) 如果您修改 __ VIEWSTATE 内的一些文本, 信息将不再符合 MAC, 并且. NET 将会在您有机会处理请求之前抓住此选项并放弃一个例外 。

TL;DR
As long as you have EnableViewStateMac on (which you should), you can t really modify the __VIEWSTATE field.

您可以在代码内置的 ASP.NET 控件的大多数属性都得到查看状态的支持, 这样设置属性将会间接改变该控件的视图状态 。

在你的. aspx 中:

<asp:Label id="myLabel" Text="Hi.." />

在你的. aspx. cs:

myLabel.Text = "Hello";

您不能重置 PostBack 事件上的值吗? 例如 :


    mylabel.Text = "Hello";

视图状态存储在页面上的隐藏字段中。 虽然查看国家存储数据时使用散列格式[编码格式], 但用正确的值进行修改并不容易, 并且会导致查看状态的缓和 。

您需要修改 Viewstate, 您需要知道正确的编码和解码 algo 。

所以不要试图修改观察状态。

简短的答案是你可以。

要修改观察国,你基本上必须:

  1. Deserialize the view state
  2. Identify the key/value pair associated with your label text (by this time it is an Xml dictionary containing key/value pairs)
  3. Modify
  4. Serialize the View State

此篇文章更深入地审视了查看状态的剖析。 文章中还提到了可用于剖析/ 解析视图状态的工具 : < a href="http://msdn. microsoft. com/ en- us/library/ ms972976. aspx#viewstate_ potic11" rel=“ nofollow" > 了解 ASP. NET View State





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签