C#でのMySqlデータベースへの接続についていくつか質問があります。C#データベースへの接続とデータの安全な入力
私はこのチュートリアルのデータベースhttps://www.youtube.com/watch?v=IH0dYO8QOowに基づいてデータベースに接続しましたが、この種のアプローチはMySqlインジェクションには絶対に当てはまりません。 WAMP、
- はそれがXAMPPでローカルホスト上のサーバーを作成する方が良い....またはMicrofost SQLをインストールします。私はPDOとPHPで働いている
は今、私が知りたいのは、MySQLでのステートメントを準備しました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.");
}
}
}
}
はいこれは、テキストボックスからの直接入力を使用しているため、SQLインジェクションに対して脆弱です。パラメータ化されたクエリを代わりに使用します。 – Andrew
あなたはあなたのMySQLデータベースをセットアップするためにSQL Server Management Studioを使用しているのですか? –
''私はMySqlでPDO準備文を使ってPHPで作業しています " - 構文は異なりますが、概念は同じです。 *決して*ユーザー入力を直接SQLコードに連結しません。代わりにパラメータを使用します。これは、さまざまなプログラミング言語間で変更されません。 PHPが "prepared statement"と呼ぶものC#では代わりに "パラメータ化されたクエリ"を呼び出すことができます。 – David