Как обеспечить безопасность веб-сервиса? - PullRequest
1 голос
/ 18 ноября 2011

У меня есть веб-приложение (в VS2008 C # ASP.NET 3.5 Framework). На моей странице входа есть функция CheckLogin (), которая выполняет функцию входа в систему.Я использовал удаленный веб-сервис.objWeb является объектом этого веб-сервиса.WebService_CheckLogin - это веб-метод в моем удаленном веб-сервисе.Строка подключения к базе данных записана в файле класса моего веб-сервиса.

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

    }

Веб-метод в моем веб-сервисе

[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();
    }

Мой вопрос: «Что-то не так с безопасностью»?Я имею в виду «Кто-нибудь может принять мой веб-сервис с его URL»?У меня есть много других веб-методов, в которых я передал строку в качестве параметра, например

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

С уважением, Дэвид

1 Ответ

2 голосов
/ 18 ноября 2011

Все зависит от того, как вы защищаете свои WebMethods. Ваш код выше может проверить, есть ли у пользователя правильная комбинация имени пользователя и пароля, но оттуда трудно сказать, что вы делаете с ним.

После того, как вы аутентифицировали пользователя и EnableSession для WebMethod, вы можете сделать что-то вроде этого:

[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("*","*")
...