2017-09-21 11 views
0

これは初心者のmySQL質問です。mySQLに正しくログオンする方法

私はいくつかの記事やyoutubes、mySQLとC#のログインフォームについて調べていました。それぞれのソリューションと記事は、「root」アカウントでログインし、データベース内のユーザーパスワードテーブルと照合するフォームで開始されていることに気付きました。

public partial class Login_Form_2 : Form 
{ 
    public Login_Form_2() 
    { 
     InitializeComponent(); 
    } 

    //Root level login ?? 
    MySqlConnection connection = new MySqlConnection(
    "datasource=localhost;port=3310;Initial Catalog='test';username=root;password=" 
    ); 

    MySqlDataAdapter adapter; 
    DataTable table = new DataTable(); 

    private void BTN_Login_Click(object sender, EventArgs e) 
    { 
     adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + textBox_username.Text + "' AND `password` = '" + textBox_password.Text + "'", connection); 
     adapter.Fill(table); 

     if(table.Rows.Count <= 0) 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Red; 
      label_Message.Text = "Username Or Password Are Invalid"; 
      timer1.Start(); 
     } 
     else 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Green; 
      label_Message.Text = "Login Successfully"; 
      timer1.Start(); 
     } 
     table.Clear(); 
    } 
} 

は、私は、ルートのパスワードは、クライアント側のコードであってはならないと思う:

は、例えば以下のコードは、ことを行います。

また、このようなユーザーパスワードテーブルがアクセス許可可能かどうかは疑問です。
したがって、ユーザーXはテーブルZの特定のフィールドを追加できますが、テーブルYには追加できません。

これは本当にログインのようになりますか?

答えて

0

クライアント側のアプリケーションを構築する場合は、API呼び出しによって情報を取得することをお勧めします。

私の前回の回答hereをチェックしないと、データベースに直接接続する方法についてのいくつかの洞察が得られます。 SQLインジェクションを防ぐにはParametersを使用してください。

+0

私は上記のコード例で、接続文字列について述べました。 '内部'ユーザーテーブルを持つデータベースですが、mySQLサーバーのrootアカウントを使用してログを記録しますが、これは多くの例で起こりますが、rootではなく特定のデータベーステーブル – user3800527

+0

データベースに直接接続するクライアント側のアプリケーションを構築することは決してありません。データベースにアクセスしたい場合は、常にクライアント側とサーバー側を分割する必要があります。サーバー上で呼び出しを処理するための別個のアプリケーションを構築したり、Webサイトを構築したり、APIを介してデータを実行したりすることもできます。 –

関連する問題