【发布时间】:2012-11-11 08:13:48
【问题描述】:
错误是:当我尝试使用 Response.Cookies.Add(cookie) 时,当前上下文中不存在名称“响应”;
我不确定我还需要添加什么才能使其正常工作。 我制作了用户可以登录的应用程序,并在他们登录时制作了 cookie,因此他们在重新打开应用程序时不需要再次登录。
using MySql.Data.MySqlClient;
using System.Web;
namespace login
{
public partial class Form1 : Form
{
MySqlConnection konekcija;
string baza = "host=localhost;database=test;user=root;password=";
MySqlCommand comm;
MySqlDataReader reader;
HttpCookie cookie;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
konekcija = new MySqlConnection(baza);
comm = konekcija.CreateCommand();
konekcija.Open();
}
private void button1_Click(object sender, EventArgs e)
{
string user = textBox2.Text.ToString();
string pass = textBox1.Text.ToString();
trylogin( user, pass);
}
public void trylogin(string user, string pass)
{
if (checkBox1.Checked)
{
cookie = new HttpCookie("remember_me");
cookie["Username"] = textBox2.Text;
cookie["Expire"] = "365 Days";
cookie.Expires = DateTime.Now.AddDays(365);
Response.Cookies.Add(cookie);
}
comm.CommandText = "SELECT * FROM korisnici WHERE user='"+user+"' AND pass='"+pass+"'";
reader = comm.ExecuteReader();
if (reader.Read() == true)
{
reader.Dispose();
}
else
{
reader.Dispose();
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
konekcija.Close();
}
}
}
【问题讨论】:
-
你所做的并不安全——你不能相信 cookie 会告诉你这样的用户名。而且您甚至在知道他们是否提供了有效的登录信息之前就设置了 cookie...而且您不想只是将未经处理的用户输入放入您的非参数化查询...对不起,我知道这没有答案你的问题,但这里有更大的问题。
-
trylogin中存在 SQL 注入。任何人都可以在没有凭据的情况下登录。
标签: c# mysql httpresponse httpcontext