gpt4 book ai didi

C# 连接数据库并安全输入数据

转载 作者:行者123 更新时间:2023-11-29 19:22:41 26 4
gpt4 key购买 nike

我有一些关于在 C# 中连接 MySql 数据库的问题。

我根据 youtube 上的本教程建立了与数据库的连接 https://www.youtube.com/watch?v=IH0dYO8QOow但我在视频下面的评论中看到这种方法很容易受到 MySql 注入(inject)的攻击。<​​/p>

我正在 PHP 中使用 MySql 中的 PDO 准备好的语句,现在我想知道:

  • 使用 xampp、wamp .... 在本地主机上创建服务器更好还是安装 Microfost Sql 服务器
  • 如何在 C# 中使用准备好的语句进行查询以及如何确保其安全

我使用 Microsoft Sql server 2014 来创建数据库。

请不要给我负分,因为我是 C# 新手,想学习,而且我听说这是提出问题和获得适当帮助的最佳场所。

这是简单登录表单的代码,用于连接到数据库并检查有效的用户名和密码,如果一切正常,它将打开新窗口并隐藏登录表单。

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;

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

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
// connect to a database
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Mario\Documents\mojaBaza1.mdf;Integrated Security=True;Connect Timeout=30");

// make new query
SqlDataAdapter sda = new SqlDataAdapter("SELECT COUNT(*) FROM users WHERE username = '" + textBox1.Text + "' AND password = '" + maskedTextBox1.Text + "'",connection);

// fetch data from table
DataTable dt = new DataTable();

sda.Fill(dt);

// check query for result, if returned 1 login
if (dt.Rows[0][0].ToString() == "1")
{
// hides new window
this.Hide();

// instance of new window when user log in
Main ss = new Main();

// show new window
ss.Show();
}
else
{
// error message if user entered invalid data
MessageBox.Show("Invalid username or password, please try again.");
}

}
}
}

最佳答案

试试这个:

SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Mario\Documents\mojaBaza1.mdf;Integrated Security=True;Connect Timeout=30");
SqlCommand cmd= connection.CreateCommand();
cmd.CommandText="SELECT COUNT(*) FROM users WHERE username=@username AND password=@password";
cmd.parameters.AddWithValue("@username",textBox1.Text);
cmd.parameters.AddWithValue("@password",maskedTextBox1.Text);
SqlDataAdapter sda = new SqlDataAdapter(cmd);

通过这种方式,您可以使用查询参数,这几乎是准备好的语句的 C# 版本。

关于C# 连接数据库并安全输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com