我有一个使用sql运行的登录页面示例,我试图将其自定义到我的服务器。
我遇到了sql string的问题。
这是原始的(带有我的表格信息)。这似乎是使用@user和@password从登录控件中提取用户名和密码;我认为。如果不是它在做什么?什么是@user和@password?
string sql = "select count(*) from ResidentUserDatabase where users = @user and passwords = @password";
这是我硬编码用户名和密码的地方。这有效,我能够登录就好了。 Obvioulsy不可用,但确认我连接到数据库并提取用户信息
string sql = "select count(*) from ResidentUserDatabase where users = 'user' and passwords = 'pass'";
现在,这里是我遇到问题的地方(因为第一个版本不起作用......)。我试图绕过@user和@password,显然做得不对。
string sql = "select count(*) from ResidentUserDatabase where users = '" + LoginControl.UserName.ToString() + "' and passwords = '" + LoginControl.UserName.ToString() + "'";
我不确定从哪里开始,或者为什么这个例子不起作用。
感谢
答案 0 :(得分:3)
@user
和@password
是“参数化sql查询”的参数。您在第3代码示例中创建的内容是一个真正的安全问题。谷歌称“Sql Injection攻击”。如果您不熟悉这种安全问题,那么我强烈建议您不要为您的应用程序构建登录表单。 “这里是龙”
答案 1 :(得分:2)
你在这里遇到了一些不好的事情。
首先,您不应该连接字符串,因为这会让您对SQL注入开放。谷歌,你会明白为什么。
其次,@ user和@password标记是SQL查询的参数。您要做的是将参数添加到用于执行SQL的任何对象(例如SqlCommand)。如何详细地做到这一点超出了问题的范围。
第三,您的字符串连接查询使用相同字段作为用户名和密码。这就是为什么它不起作用。