【问题标题】:ASP.NET PageMethods parameter securityASP.NET PageMethods 参数安全
【发布时间】:2014-08-07 23:11:49
【问题描述】:

我有一个只有经过身份验证的用户才能访问的 asp.net 页面。在此页面上,用户可以更新他们的密码。我通过 PageMethods 执行此操作并将密码作为参数传递。

这个密码有多安全?可以拦截吗?对敏感数据使用回发而不是 PageMethods 的安全性如何?

【问题讨论】:

  • 您使用的是 HTTPS/SSL 吗?

标签: asp.net security parameters webmethod pagemethods


【解决方案1】:

由于没有 HTTPS,这很容易受到MITM 攻击。

回发更安全(如果您正在加密 ViewState),因为这将保护您免受CSRF 的侵害。来自Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet

ASP.NET 可以选择维护您的 ViewState。 ViewState 指示页面在提交到服务器时的状态。状态是通过放置在每个页面上的隐藏字段和控件来定义的。 Viewstate 可以用作 CSRF 防御,因为攻击者很难伪造有效的 Viewstate。伪造有效的 Viewstate 并非不可能,因为攻击者可以获取或猜测参数值是可行的。但是,如果将当前会话 ID 添加到 ViewState,它会使每个 Viewstate 都是唯一的,因此不受 CSRF 影响。 使用 ViewState 中的 ViewStateUserKey 属性来防止欺骗性回发。在Page派生类的OnInit虚方法中添加如下(该属性必须在Page.Init事件中设置)

您可以使用 PageMethods,但您必须添加一个反 CSRF 令牌(用于 Synchronizer 令牌模式或双重提交 Cookies 方法),或者您可以验证请求中是否设置了 X-Requested-With or Origin

但是,由于这是一个密码重置表单,针对 CSRF 的有效防御措施是询问用户以前在 XHR 中发送的密码。由于攻击者不知道他们的旧密码,这种形式不能被 CSRF 滥用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多