2017-08-31 11 views
-2

無料のSQLホスティングサイト(www.000webhost.com)でホストされているテーブルを検索して(C#でプログラム的に)、ユーザー名のテーブルを検索し、ユーザー名の横に格納されている「パスワード」文字列と比較しようとしています。これまで私はC#SQL接続を扱ったことがないので、これをどうやって行うのか手がかりはありません。SQLサーバーで「ユーザー名とパスワード」タイプの検索を行うにはどうすればよいですか?

{ SqlConnection myConnection = new SqlConnection("user id=XXXXXXXXXXXXXXX;" + "password=XXXXXXXXXXXXXX;server=databases-auth.000webhost.com;" + "Trusted_Connection=yes;" + "database=XXXXXXXXXXXXXXXX; " + "connection timeout=30"); }

「パスワード」はTextBox2をになりながら、「ユーザ名」は、ユーザがそれをTextBox1が入力することになります。私が使用できるコード/リンクの例やウェブサイトへのリンクは、非常に高く評価されます。前もって感謝します!

+6

いいえ...未処理のパスワードを保存しないでください。常にパスワードをハッシュします。 –

+0

@WillemVanOnsemはい、それは後の計画です。 – michaelrh04

+2

あなたはどのフレームワークを使用していますか? ASP.NET? MVC?どちらも認証が正しく実装されており、既に組み込まれています。特に、あなたが作成したものが三角形であれば、車輪を改造しないでください。 –

答えて

1

私が提案する最初のことは、パスワードをそのままの形式で送信しないことです。少なくともそれらをハッシュし、ハッシュ形式で保存してみてください。パスワードを使用してクエリを作成する場合は、ハッシュされた文字列を送信します。

ハッシュの場合、MD5やSHA-256などの「一方向」暗号化形式を使用できます。これらはSystem.Security.Cryptographyで見つけることができます。

次に、文字列を連結してクエリを構成しないでください。代わりに、パラメータ化されたコマンドを使用すると、セキュリティのレベルが得られます。これを見てください

最後に、返される列が2つ以上必要な場合は、DataReaderを使用してください。 1列だけを返す必要がある場合は、単一の値を返すExecuteScalar関数を使用します。 this linkには、ExecuteScalarの使用方法が記載されています。

+0

ありがとうございます - これは意図したとおりに動作しており、システム暗号化を使用しています。あなたへの誇り。 – michaelrh04

-3
public String auth(String u, String p) 
{ 

string recuperatedData = ""; 

     //Create Connection 
     SqlConnection conn = new SqlConnection(@"Data Source=DRACARYS\SQLEXPRESS;Initial Catalog=test;Integrated Security=SSPI"); 

     //SQL Command 
     SqlCommand cmd = new SqlCommand("SELECT password FROM dbo.databasename WHERE username = '" + u +"'" , conn); 

     //Open connection 
     conn.Open(); 

     //To read from SQL Server 
     SqlDataReader dr = cmd.ExecuteReader(); 

     while (dr.Read()) 
     { 
      recuperatedData = dr["password"].ToString(); 
     } 

     //Close Connections 
     dr.Close(); 

     if (recuperatedData == p) 
     { 
      //return flag value to shos you've logged in to a different function with post log in functionalities 
     } 
} 
+0

ユーザ名が '' OR '' = ''' –

+0

の場合はどうすればよいですか?そして、上記と同じ構文形式でORコメントを追加してください。 SQL構文と似ています。これは、プロジェクトを進めるために必要なアイデアを質問する人に与える個人的なプロジェクトのコードです。最初の概念的な問題が解決されれば、必要に応じていつでも追加を行うことができます。 –

+0

@SoumyajyotiBhattacharya DourHighArchは、文字通り ''OR '' = ''のユーザー名を参照していると思います。要点は、あなたのクエリがSQLインジェクションに対してオープンであるということです。 '' OR '' = ''というユーザ名でログインしようとすると、SQLは次のようになります:' SELECT password FROM dbo.databasename WHERE username =' 'OR' '=' ''戻ってきた。 – RToyo

関連する問題