---
title: "Ang. inloggningar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/89380-ang-inloggningar"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Prästen"
published: "2003-11-01T00:06:30.000Z"
updated: "2003-11-02T12:06:37.000Z"
replies: 13
views: 610
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/89380-ang-inloggningar"
---

# Ang. inloggningar

## #1 — Prästen, 2003-11-01T00:06Z

Tjenare. vill starta en diskussion om säker inloggning.

Jag har en sida där man skriver in sitt login och sin kod, sen använder jag LoginTextBox.Text och KodTextBox.Text och gör en SELECT, såhär: 

```
SELECT * FROM users WHERE login='" + LoginTextBox.Text + "' AND kod=" + KodTextBox.Text + "
```

Men detta är ju inget bra sätt att göra det, eftersom i Textboxformulären så får ju användaren direkt access till Databasen ju, för att nån klurig jäkel §jr   kan ju skriva in ett giftigt SQL kommando som raderar hela databasen eller nåt, så det var därför jag funderade om ni kanske har nåt tips på säker inloggning?.

Permalänk: https://www.webforum.nu/p/89380

## #2 — Broskan, 2003-11-01T09:09Z

Login

Du borde väl lägga LoginTextBox.Text värdet i en variabel som du sen lägger i din sql-sträng.

```
	string strUser = ((TextBox)e.Item.FindControl("txtUser")).Text;
	string strPass = ((TextBox)e.Item.FindControl("txtPass")).Text;

	string sql = "SELECT * FROM skivor WHERE User='" + strUser + "' AND Pass='" + strPass + "'";
```

	
//Broskan

Permalänk: https://www.webforum.nu/p/1195867

## #3 — cyprys, 2003-11-01T09:38Z

Om du inte skall köra med SP så borde en funktion som tar bort "olagliga" tecken vara en självklarhet. 

Med olagliga tecken menar jag alla utom a-z A-Z 0-9 \_ & @ t.ex. 
', " och % vill man ofta ha bort då dessa kan utnyttjas genom SQL-injections.

Permalänk: https://www.webforum.nu/p/1195874

## #4 — Prästen, 2003-11-01T14:05Z

men finns det inte ett bättre sätt så att användaren inte alls får tillgång till databas-queries SQL?.

Permalänk: https://www.webforum.nu/p/1195986

## #5 — Jon, 2003-11-01T14:16Z

<http://www.aspalliance.com/articleViewer.aspx?aId=22>

 :)

Permalänk: https://www.webforum.nu/p/1195992

## #6 — renholm, 2003-11-01T15:05Z

Har inte hittat någon bra sida som går igenom parameters i sqlsatsen ännu men det fungerar ungefär som stored procedures parametrarna och gör att användaren inte får direkt access att göra egna frågor till databasen.

<http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbCommandClassParametersTopic.asp?frame=true>

Permalänk: https://www.webforum.nu/p/1196030

## #7 — Prästen, 2003-11-01T15:40Z

uuuh, stored procedures e krångligt, finns det nåt annat sätt?, text lägga upp alla användarna i ett dataset och itera i det efter namnet istället?.

Permalänk: https://www.webforum.nu/p/1196046

## #8 — Jon, 2003-11-01T16:33Z

Det är inga konstigheter med parametriserade frågor :)

```
void btnAddEntry_Click(object sender, EventArgs e)
    {
        //Create connection object
        SqlConnection conn = new SqlConnection(
            "data source=MyServer;initial catalog=Guestbook;"
            + "integrated security=SSPI;");

        //Create command object
        SqlCommand cmd = new SqlCommand(
            "INSERT INTO Entries (UserName, Message) "
            + "VALUES(@UserName, @Message)", conn);
        
        //Create and add parameters
        SqlParameter pUserName = new SqlParameter("@UserName", SqlDbType.NVarChar, 20);
        pUserName.Value = Server.HtmlEncode(txtName.Text);
        cmd.Parameters.Add(pUserName);
        
        SqlParameter pMessage = new SqlParameter("@Message", SqlDbType.NVarChar, 1000);
        pMessage.Value = Server.HtmlEncode(txtMessage.Text);
        cmd.Parameters.Add(pMessage);

        //Insert entry into database
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }
```

Detta är en insert. Det funkar precis likadanrt med en select.

Permalänk: https://www.webforum.nu/p/1196066

## #9 — Prästen, 2003-11-02T00:51Z

så man behöver inte ändra i databasen eller något sådant utan det är bara å köra som vanligt?.

Permalänk: https://www.webforum.nu/p/1196273

## #10 — Jon, 2003-11-02T09:22Z

Visst är det bara att köra som vanligt!
Ditt SqlCommand  ska innehålla antingen namnet på en Stored procedure ellr en helt vanlig sträng med en sql-fråga (vilket verkar vara de du är ute efter)

Trixet med det hela är SqlParametrarna...

Permalänk: https://www.webforum.nu/p/1196309

## #11 — Prästen, 2003-11-02T11:04Z

hm hur göra man en stored procedure?

Permalänk: https://www.webforum.nu/p/1196342

## #12 — Jon, 2003-11-02T11:39Z

Det gör man lättast i sql-server manager eller i vs.net under server connections.
Men du behöver som sagt inte göra en stored procedure. Vet du vad? Jag tror att jag ska slänga ihop ett exempel så kanske du förstår hur jag menar :)

c#

```

protected System.Web.UI.WebControls.Label Msg;
		protected System.Web.UI.HtmlControls.HtmlInputText UserLogin;
		protected System.Web.UI.WebControls.Button Button1;
		protected System.Web.UI.HtmlControls.HtmlInputText UserPass;

private void Button1_Click(object sender, System.EventArgs e)
		{
string temp = ConfigurationSettings.AppSettings["connstr"].ToString(); 
		SqlDataReader dr;

		SqlConnection connection = new SqlConnection(temp);
		SqlCommand command = new SqlCommand("SELECT * FROM users WHERE login=@strLogin AND kod=@strPass", connection);
		command.CommandType = CommandType.Text;
		command.Parameters.Add("@strLogin", Server.HtmlEncode(UserLogin.Value.Trim()));
		command.Parameters.Add("@strPass", Server.HtmlEncode(UserPass.Value.Trim()));

		try 
		{

			connection.Open();
			dr = command.ExecuteReader();

			if(dr.Read())
			 {
FormsAuthentication.RedirectFromLoginPage(UserLogin.Value, false);
	
			}
			else 
			{
				Msg.Text = "Nej Du!";
			}
		}

		catch(Exception myException) 
		{
			Msg.Text = "SQL-fel: " + myException.Message;
		}
		finally	
		{
			connection.Close();
		}
}
```

Permalänk: https://www.webforum.nu/p/1196357

## #13 — Prästen, 2003-11-02T11:53Z

hmm, jag tror jag förstår, så det är Parameters.add man använder så den ska förstå vad "@strLogin" är för något, vilket värde eller variabel "@strLogin" representerar. eller?

Permalänk: https://www.webforum.nu/p/1196359

## #14 — Jon, 2003-11-02T12:06Z

Precis :)

Om man sen vill göra en stored procedure någon gång så anger man inparametrarna i den på precis samma sätt... Så det är väldigt lätt att ändra i efterhand

Permalänk: https://www.webforum.nu/p/1196361

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/89380-ang-inloggningar
