gpt4 book ai didi

c# - Page.IsPostBack 的安全实现?

转载 作者:太空狗 更新时间:2023-10-29 23:34:13 25 4
gpt4 key购买 nike

关注我的 previous question至于 ASP.net 的默认 Page.IsPostBack 实现是否安全(不是;它可以被伪造……HTTP 动词甚至不必是 POST!),我在想;肯定有更好的方法来实现它吗?我们能否想出一个 Page.IsPostBack 实现,当它为真时,几乎可以保证该页面是一个实际的 ASP.net 回发?如果只想进行一次安全检查(比如某些内容是否会出现,基于用户的角色),并且只有在我们不处理 ASP.net 回发时才想这样做,这一点很重要.

关于如何执行此操作,我的第一个想法是在属性中实现检查代码,因此我可以在 Page_Load 中编写如下内容:

if (!_isPostBack)
{
// Do security check
if (userIsNotAuthorized)
{
btnViewReports.Visible = false;
btnEditDetails.Visible = false;
// etc.
}
}

有没有办法安全地实现_isPostBack?也许在 ViewState 中存储一些很难或不可能偷工减料来伪造回发的东西?随机字符串?

最佳答案

几年前我有一个项目,我们对代码进行了一些渗透测试。他们标记了一个事实,即默认情况下 IsPostback 不检查 http 动词。为了解决这个问题,我创建了一个抽象的 Page 类,它自己实现了 IsPostback 来隐藏默认实现:

Public Class ProjectPage : System.Web.UI.Page

public new bool IsPostBack()
{
return (Page.IsPostBack && Request.HttpMethod.ToUpper() == "POST");
}

End Class

这允许您对 http 动词进行测试,但您也可以轻松地扩展该方法以进行其他检查。

关于c# - Page.IsPostBack 的安全实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328618/

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