【问题标题】:asp.net forms - protecting forms(or folders) from unauthenticated usersasp.net forms - 保护表单(或文件夹)免受未经身份验证的用户的侵害
【发布时间】:2014-05-30 00:07:30
【问题描述】:

我正在开发一个 asp.net 应用程序,使用 sql server 2005 和 C#,我遇到了安全问题。 我有三个用户级别:

  • level_3
  • level_2
  • level_1

每个用户都有一个自己的表单,用户存储在一个 sql 表中,如下所示: 用户、密码和级别。 我可以成功地将每个用户重定向到他们各自的表单。 我遇到的问题是我不想让其他用户嗅探其他表单。这是我的代码:

string level;
string connstring = @"Data Source=oyner-PC\SQLEXPRESS;Initial Catalog=sat;Persist Security Info=True;User ID=login1;Password=?????????";
protected void btnLogin_Click(object sender, EventArgs e)
{        
    string name = txtUser.Text;
    string password = txtPassword.Text;
    SqlConnection conn = new SqlConnection(connstring);
    conn.Open();
    SqlCommand cmdd = new SqlCommand("SELECT level FROM users WHERE name = @name AND password = @pass", conn);
    cmdd.Parameters.AddWithValue("@name", name);
    cmdd.Parameters.AddWithValue("@pass", password);

    var firstColumn = cmdd.ExecuteScalar();
    if (firstColumn != null)
    {
        tipo = firstColumn.ToString();
        if (level == "Level_1")
        {                
            Response.Redirect("level_1/leve_1.aspx");                
        }
        if (level == "Level_2")
        { 
            Response.Redirect(""level_2/leve_2.aspx"");
        } 
        if (tipo == "Level_3")
        { 
            Response.Redirect(""level_3/leve_3.aspx"");
        } 


    }
    if (firstColumn == null)
    {
        lblMensaje.Text = "Access denied,";
    }
}

任何建议都会非常有用

【问题讨论】:

  • 这是一个不错的第一个问题,如果您尝试过任何方法,只要拒绝您的用户访问其他页面就可以了!我会将登录用户存储在会话数据中并在页面加载时检查它,但这只是我:)
  • “我正在发明身份验证方案”和“我将密码以明文形式存储在数据库中”是两个强大的投票磁铁……请注意。 (也几乎可以通过使用参数化查询来弥补)。
  • 不错的答案,我会尝试使用会话变量来验证 form_load 中的用户是否可以使用各自的表单,感谢您的解决方案。

标签: c# asp.net forms sql-server-2005


【解决方案1】:

这大致类似于 ASP.NET 授权中的用户角色。

例如,如果 Level 1 是 Role1(例如),Level 2 = Role2 等,那么您可以在应用程序的 web.config 中指定特定组的用户无法查看某些页面(例如您的表单页面)。例如,要将特定页面仅限于 Level1 用户,您可以在 web.config 中指定如下内容:

<location path="Login\form1.aspx" >
<authorization>
  <allow roles="Level1"/>
  <deny users="?"/>
</authorization>
</location>

在此处了解更多信息:ASP.NET Authorization

【讨论】:

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