asp.net - 爬取页面时如何判断ViewState是否启用了MAC?

标签 asp.net security viewstate

我正在使用 Burp Suite在一个网站上做一些安全测试,我注意到当它检测到 ViewState 时,它​​会自动告诉你它是否启用了 MAC。

我很好奇是否有人知道一种程序化的方法来确定是否启用了 MAC,如果您正在抓取网站而没有实际尝试修改 ViewState,提交它并查看是否有任何问题发生?

据我所知,Burp Suite 只是通过查看请求(而不是修改/提交)来执行此操作。

最佳答案

ViewStates 基本上是 BASE64 编码的字符串。所以你可以做的是尝试用 BASE64 解码器解码它们。如果它是加密的,你会得到一些不是真正可读的二进制内容。如果未使用加密,您将能够看到内容。例如Fiddler2可以帮助您在浏览器中解码 ViewState。

现在还有使用 MAC 的选项:

If the viewstate has its MAC enabled then there The security of this system lies in the secrecy of the secret key value. This value is always stored on the server, either in memory or in a configuration file (more on this later)—it is never written to the page. Without knowing the key, there would be no way for an attacker to compute a valid view state hash.

来自 MSDN "View State Security" .

您可以通过解码 VIEWSTATE(如果未加密)来检查这一点,并验证 ViewState 结构的末尾是否存在 20 字节的哈希值。

关于asp.net - 爬取页面时如何判断ViewState是否启用了MAC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17841544/

相关文章:

security - Oauth 2.0 隐式授予的安全性如何?

c# - 一年范围的 2 个下拉列表

asp.net - SharePoint 2013 中应用程序页面的 View 状态会在一段时间后过期吗?

javascript - 动态加载的用户控件中控件的单击事件未在 .js 文件中触发

javascript - 在 asp .net 中使用动态数据源进行 Bootstrap 星级评定

c# - 通过传递的参数查找枚举值

c# - 更新标签中的文本

.net - 如何避免 ASP.NET 应用程序中的 SQL 注入(inject)攻击?

ASP.net ViewState - 即使禁用,也存在一些 View 状态。为什么?

database - 带有数据库 : java. lang.ClassNotFoundException : org. springframework.security.core.userdetails.jdbc.JdbcDaoImpl 的 Spring Security 应用程序