我有一个使用以下方法的WebService:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public string Login(string passwort, string email, string firma)
{
return LoginHelper.Login(passwort, email, firma);
}
Run Code Online (Sandbox Code Playgroud)
我的LoginHelper代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
namespace WebService1
{
public class LoginHelper
{
public static string Login(string passwort, string email, string firma)
{
string userName = "";
SqlConnection con = new SqlConnection(@"Data Source=Yeah-PC\SQLEXPRESS;Initial Catalog=works;Integrated Security=true;");
SqlCommand cmd = new SqlCommand(@"SELECT firma FROM TestData
WHERE email = @email", con);
cmd.Parameters.AddWithValue("@email", email);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
//userName += dr["email"].ToString();
//userName += dr["passwort"].ToString();
userName += dr["firma"].ToString();
}
dr.Close();
con.Close();
return userName;
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你们的帮助
我编辑了我的问题.这个解决方案现在安全吗?我的意思是反对SQL注入.还有什么比我能做得更好的事情吗?
你在打电话 LoginHelper.Login(passwort, email, firma);
但在你的方法
public static string Login(string email, string passwort, string firma)
电子邮件是拳头参数.
实际上在电子邮件参数中你有密码,这就是为什么它不返回任何结果
改变你的login方法LoginHelper如下
public static string Login(string passwort, string email, string firma)
{
string userName = "";
using (SqlConnection con = new SqlConnection(@"Data Source=Yeah-PC\SQLEXPRESS;Initial Catalog=works;Integrated Security=true;"))
using(SqlCommand cmd = new SqlCommand(@"SELECT firma FROM TestData WHERE email = @email", con))
{
cmd.Parameters.AddWithValue("@email", email);
con.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
if (rdr["firma"] != DBNull.Value)
{
userName += rdr["firma"].ToString();
}
}
}
}
return userName;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |