C# 如何确保Webservice的安全性?

C# 如何确保Webservice的安全性?,c#,asp.net,web-services,webmethod,C#,Asp.net,Web Services,Webmethod,我有一个web应用程序(在VS2008 C#ASP.NET 3.5框架中)。在我的登录页面中有一个函数CheckLogin(),它执行登录功能。我使用了远程Web服务。objWeb是该web服务的对象。WebService\u CheckLogin是我的远程WebService中的一种webmethod。数据库连接字符串写在my WebService的类文件中 public DataSet CheckLogin() { string username = Convert.

我有一个web应用程序(在VS2008 C#ASP.NET 3.5框架中)。在我的登录页面中有一个函数CheckLogin(),它执行登录功能。我使用了远程Web服务。objWeb是该web服务的对象。WebService\u CheckLogin是我的远程WebService中的一种webmethod。数据库连接字符串写在my WebService的类文件中

public DataSet CheckLogin()
    {
        string username = Convert.ToString(txtUname.Text);
        string password = Convert.ToString(txtPassword.Text);
        return objWEB.WebService_CheckLogin(username,password);

    }
我的webservice中的Webmethod

[WebMethod]
    public DataSet WebService_CheckLogin(string uname,string pswd)
        {
            c.connect();
            DataSet ds = new DataSet();
            SqlCommand cmd = new SqlCommand("sp_verifyuser", c.con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Username", uname);
            cmd.Parameters.AddWithValue("@Password", pswd);
            c.getdataset(cmd, ref ds);
            return ds;
        }
public void connect()
    {
        if (con.State == ConnectionState.Open)
        {
            con.Close();

        }
        con.ConnectionString="Data Source=xxxxxxx;Initial Catalog=xx;User ID=xx;Password=xxxx";

        con.Open();
    }
我在webservice中的连接类

[WebMethod]
    public DataSet WebService_CheckLogin(string uname,string pswd)
        {
            c.connect();
            DataSet ds = new DataSet();
            SqlCommand cmd = new SqlCommand("sp_verifyuser", c.con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Username", uname);
            cmd.Parameters.AddWithValue("@Password", pswd);
            c.getdataset(cmd, ref ds);
            return ds;
        }
public void connect()
    {
        if (con.State == ConnectionState.Open)
        {
            con.Close();

        }
        con.ConnectionString="Data Source=xxxxxxx;Initial Catalog=xx;User ID=xx;Password=xxxx";

        con.Open();
    }
我的问题是‘根据安全规定有什么问题吗’?我的意思是‘有人能用我的网址访问我的网站服务吗’?我有许多其他webmethods,其中我将字符串作为参数传递,如

string profilePassword = objWEB.Verify_ProilePassword("exec sp_verify_profilepwd '" + txt_profil_pwd.Text + "','"+cid+"'");
问候,,
David

这一切都取决于您如何保护您的WebMethods。您上面的代码可能会检查用户是否具有有效的用户名/密码组合,但很难从中判断您正在使用它做什么

为WebMethod创建并启用Session后,可以执行以下操作:

[WebMethod(EnableSession = true)]
public static string HelloWorld(){
if (User.Identity.IsAuthenticated)
{
    return "Hello " + HttpContext.Current.Request.User.Identity.Name;
}
else
{
    return "I don't talk to strangers";
}
}
请随时发布任何问题

另外-如果您对sp_verifyuser存储过程不小心,这样的调用可能会导致灾难:

WebService_CheckLogin("*","*")

@Greg…那么我的CheckLogin()应该是怎样的呢?