0

c# コード:

  namespace WpfApplication22
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {


                SqlConnection conn = new SqlConnection(@"data source=(local);database=Aukcija;integrated security=true;");
                SqlCommand cmd = new SqlCommand ("Select * from Users where username='"textBox1.Text +"' and pasword= '"textBox2.Text +"' ", conn);
                conn.Open();

    }
            }
        }

これの何が問題なのですか。11 個のエラーが発生しています...誰か助けてもらえますか?

http://i.stack.imgur.com/rGCbZ.jpgエラーのリスト

4

4 に答える 4

1

You've lost '+' signs before of textBoxes Texts.

SqlCommand cmd = new SqlCommand ("Select * from Users where username='" + textBox1.Text +"' and pasword= '" + textBox2.Text + "' ", conn);

But you'd better use command parameters in such cases.

于 2013-03-07T14:20:59.187 に答える
1

SqlCommand cmd = new SqlCommand("Select * from Users where username='" + textBox1.Text + "' and password= '" + textBox2.Text + "' ", conn);

+テキストボックスのテキストを読む前に記号が欠けていpasswordて、クエリのスペルが間違っていました。

しかし、実際にはこれを破棄して、代わりにパラメーター化されたクエリを使用する必要があります。SQL インジェクション攻撃に対して脆弱なままです

于 2013-03-07T14:26:48.177 に答える
1

正しい答えはすでに与えられていると言いたいのですが、テキスト ボックスの内容を SQL コマンドに直接挿入するという大きな間違いも犯しています。これにより、SQL インジェクション攻撃に対して無防備になり、文字通り DB 全体を破壊する可能性があります。

この問題を回避するには、常にパラメーターを使用してください。

SqlConnection conn = new SqlConnection(@"data source=(local);database=Aukcija;integrated security=true;");
                SqlCommand cmd = new SqlCommand ("Select * from Users where username=@username and pasword=@password ", conn);
cmd .Parameters.AddWithValue("username", textBox1.Text);
cmd .Parameters.AddWithValue("password", textBox2.Text);
                conn.Open();

ここでもっと読む:

http://en.wikipedia.org/wiki/SQL_injection

于 2013-03-07T14:27:21.913 に答える
0

する必要があります

SqlCommand cmd = new SqlCommand (
"Select * from Users where username='" + textBox1.Text + "' and password= '" + textBox2.Text + "'", conn);

次のようなものを使用して、 SQL インジェクション攻撃を回避したい

SqlCommand.CommandText = "SELECT * FROM tblTable WHERE TableID = @Parameter";
SqlCommand.Parameters.Add(new SqlParameter("@Parameter", parameterValue));
于 2013-03-07T14:24:20.957 に答える