Avatar billede _et Praktikant
19. april 2004 - 21:22 Der er 9 kommentarer og
1 løsning

sikre SQL streng

Jeg har en class der indsætter i en database, og denne class, skal sikres mod at der i felter indtastes ' eller , eller andre tegn, der ødelægger queryen

Jeg regner med at det kun er de enkelte felter i k, der skal gennemsøges og udskiftes tegn i, men jeg kan ikke lige overskue hvordan?

her er class'en

        public void Skriv_mySQL()
        {
            CDataBase Con_info = new CDataBase();
            ArrayList Info = Con_info.DB_Info();
            int Antal = Info.Count;
            string MyConString = null;

            //Connection string for Connector/ODBC 3.51
            MyConString = "DRIVER=" + Info[0] +
                ";SERVER=" + Info[1] +
                ";DATABASE=" + Info[2] +
                ";UID=" + Info[3] +
                ";PASSWORD=" + Info[4] +
                ";OPTION=" + Info[5] +
                ";"; 
             
            //Connect to MySQL using Connector/ODBC
            OdbcConnection MyConnection = new OdbcConnection(MyConString);
            MyConnection.Open();           
           
            OdbcCommand MyCommand = new OdbcCommand("DROP TABLE liste", MyConnection);         
            MyCommand.ExecuteNonQuery();
            MyCommand.CommandText = "CREATE TABLE `liste` (`auto_nr` bigint(20) NOT NULL auto_increment, `id` bigint(20) NOT NULL default '0', `b_dato` varchar(100) default '', `b_tid` varchar(100) default '', `fornavn` varchar(100) default '', `efternavn` varchar(100) default '', `adresse` varchar(100) default '', `postnr` varchar(100) default '', `byen` varchar(100) default '', `telefon` varchar(100) default '', `e_mail` varchar(100) default '', `nyt_kat` varchar(100) default '', PRIMARY KEY  (`auto_nr`)) TYPE=MyISAM;";
            MyCommand.ExecuteNonQuery();

            string MinInsertSQL;
            foreach(CKunde k in arrKunder)
            {
                MinInsertSQL = "INSERT INTO liste(id, b_dato, b_tid, fornavn, efternavn, adresse, postnr, byen, telefon, e_mail, nyt_kat) VALUES('" + k.ID + "', '" + k.B_dato + "', '" + k.B_tid + "', '" + k.ForNavn + "', '" + k.EfterNavn + "', '" + k.Adresse + "', '" + k.Postnr + "', '" + k.By + "', '" + k.Telefon + "', '" + k.Email + "', '" + k.Nyt_Kat + "')";
                MyCommand.CommandText = MinInsertSQL;
                MyCommand.ExecuteNonQuery();
            }

            MyConnection.Close();
        }
Avatar billede arne_v Ekspert
19. april 2004 - 21:37 #1
Den mest primitive løsning må være at erstatte:

k.Xxxx

med

k.Xxxx.Replace("'", "''")
Avatar billede _et Praktikant
19. april 2004 - 21:56 #2
fancy
Avatar billede _et Praktikant
19. april 2004 - 21:57 #3
kan jeg skrive :

xxxx + k.ID.Replace("'", """) + xxxxxx

??
Avatar billede arne_v Ekspert
19. april 2004 - 22:01 #4
Det burde du kunne.
Avatar billede arne_v Ekspert
19. april 2004 - 22:02 #5
Hov

det er

double single double -> double single single double

ikke

double single double -> double double double
Avatar billede _et Praktikant
19. april 2004 - 22:18 #6
Det var ikke helt rigtigt, men næsten. :-)

k.ForNavn.ToString().Replace("'","''")

så duer det.

svarer du lige.?
Avatar billede arne_v Ekspert
19. april 2004 - 22:21 #7
svar
Avatar billede burningice Nybegynder
20. april 2004 - 08:02 #8
... det allerbedste er vel at bruge Parametre... de tager selv højde for den slags
Avatar billede arne_v Ekspert
20. april 2004 - 11:37 #9
Det er en mere avanceret løsning.
Avatar billede _et Praktikant
20. april 2004 - 13:44 #10
Jeg takker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester