【问题标题】:Hacking DropDownList value破解 DropDownList 值
【发布时间】:2010-02-28 11:51:03
【问题描述】:

我有一个 DropDownList,我正试图阻止它被用作攻击媒介。我可以假设用户无法实际更改 DDL 的值并回发到服务器吗?目前,如果我在提交后尝试更改数据包,则会抛出此 ASP.NET 错误消息:

For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.

我是否认为这是由于视图状态哈希中的完整性受到损害?可以绕过吗?

谢谢

【问题讨论】:

    标签: asp.net security drop-down-menu integrity


    【解决方案1】:

    实际上,只要页面具有 EnableEventValidation = true (这是默认设置,尽管您可以按页面或在 web.config 中禁用它),您应该能够假设下拉列表选项没有被客户端更改。如果将新值添加到您的下拉列表客户端,并且发生回发,则会发生错误,除非您注册此新值以进行事件验证 (http://odetocode.com/blogs/scott/archive/2006/03/21/asp-net-event-validation-and-invalid-callback-or-postback-argument-again.aspx)

    【讨论】:

    • 看,这就是我认为的情况。我弄乱了 DDL,但只能得到错误消息。任何人都可以确认一种或另一种方式吗?谢谢
    • 通常我同意你不能相信来自客户端的内容(这是你设置 asp.net 验证器控件来验证客户端和服务器端的原因之一),但在这种情况下你只要启用了 EventValidation,就可以确定 ddl 没有被弄乱。即使您尝试验证您的 ddl 和回发事件服务器端,您可能会做同样的事情 ASP.Net 在 EventValidation 设置为 true 时所做的事情。
    【解决方案2】:

    不,你不能假设。

    您应该始终认为所有输入都是不可信的,并适当地对待它(确保它是应该的,并且它是正确的类型,并且当前用户(或其他人)可以访问它,等等)。

    【讨论】:

    • 请提供证明,即表明攻击成功的概念证明
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2021-11-18
    • 2016-10-30
    相关资源
    最近更新 更多