2016-05-27 21 views
1

私はasp.netとsql serverの初心者です。私は、SQL認証を使用してSQL Server 2014でデータベースを作成しました。ASP.NETでこのエラーを解決するには

Registration.aspx.cs

public partial class Registration : System.Web.UI.Page 
{ 
    SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-U9DUN78\SQLEXPRESS;Initial Catalog=LoginRegisterData;Persist Security Info=True;User ID=sa;Password=***********;Pooling=False"); 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 


    protected void Button1_Click(object sender, EventArgs e) 
    {  
     try 
     { 
      con.Open(); 
      SqlCommand cmd = con.CreateCommand(); 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "insert into UserDetails values('" + TextBoxUsername.Text + "','" + TextBoxEmailid.Text+ "','" + TextBoxPassword.Text + "','" + TextBoxDate.Text + "','" + DropDownListCountry.SelectedItem + "')"; 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
     catch(Exception ee) 
     { 
      Response.Write(ee); 
     } 

    } 

私は、SQL Serverデータベースにデータを格納したい:

は、ここに私のコードです。他の人がそれを言ったように

Error page

+4

接続でパスワードを確認するSqlConnectionに渡される文字列は、SSMSで使用するパスワードと正確に一致します。 – techspider

+0

エラーに基づいて、資格情報が間違っているようです。同じものを使用してSQL Server Management Studioにログインし、それが役立つかどうかを確認してください。また、文字列を連結する代わりに、パラメータを使用してクエリを構築することも検討してください。 –

+0

以前のユーザーが指摘したとおり(資格情報の確認)接続を開こうとしているコードでブレークポイントを指すことができます。 追加のアドバイス: 1. WebアプリケーションのSQL接続に「sa」を使用しないでください。非常に危険な方法 2.挿入クエリをパラメートするか、少なくとも@ – DaniDev

答えて

1

はおそらくちょうど悪いパスワードです:次のスナップは、私が取得していますエラーです。 SSMSでSql Server認証が有効になっていることを確認するには、インスタンスを右クリックし、プロパティを選択してSql ServerとWindows認証が選択されていることを確認します。また

enter image description here

...

  1. 作成し、テスト接続では、新しいテキストファイルを作成し、anything.udlに名前を変更することができます文字列に。 ダブルクリックすると、いくつかの異なる接続タイプの接続文字列を作成してテストすることができます。変更を保存してメモ帳でファイルを開くと、必要な形式で接続文字列が表示されます。

  2. SQLインジェクションの脆弱性を持っているかのように、データベースに接続してはいけません(あなたのように)。通常のユーザーだけの場合に発生するダメージがはるかに大きくなります。

  3. あなたが書いたコードはテキストブックの例ですので、sql injectionで読んでください。

+0

ありがとうございます。私は一度私は '窓認証'として認証を変更出力を得たが、それはSQL認証で動作しません。その理由を教えてもらえますか? – John

1

Sql Server 2008 R2でテスト済みです。 @etoisarobotによれば、SQL認証とWindows認証の両方を受け入れるように上記のようにサーバーを構成します。管理者(あなたがうまくいけば)は、Windows認証を使用して接続します。このスクリプトを実行してsaのパスワードを変更してください。正しいパスワードがわかっています。このスクリプトを実行します。

ALTER LOGIN [sa] WITH PASSWORD='PickAPassword', CHECK_POLICY=OFF 
GO 
ALTER LOGIN [sa] ENABLE 
GO 

「SQL Server」サービスを再起動して変更を有効にします。 これで、saとしてログインすることができます。

他にも述べたように、sa以外の新しいログインアカウントを作成する必要があります。たとえば、datareaderとdatawriterなどの必要なアクセス許可だけです。ユーザーにテーブル構造などを変更するアクセス許可を与えたくない。

さらに安全なのは、データアクセス許可とストアドプロシージャの実行のみを許可することです。このリンクは、方法を示しています:GRANT EXECUTE to all stored procedures

あなたはUPDATE、INSERT、DELETEステートメントを使用することを断念しています。これらの更新を行うストアドプロシージャを作成する作業は少しあります。しかし、データの更新方法を制御できます。ユーザーがDELETE MyPreciousTableDELETE MyPreciousTable WHERE id = 123456789の目的で実行できるようにする必要はありません。

GRANTおよびDENYコマンドを管理者として使用して、外部ユーザーが実行できる操作を細かく調整できます。

関連する問題