Avatar billede bongo20 Nybegynder
23. september 2004 - 22:01 Der er 16 kommentarer og
3 løsninger

sikkerhed mod hackere

Når jeg nu smider min webapp på nettet hvordan sikrer jeg mig så imod utilsigtet brug.

Det jeg tænker på er gode råd, i stil med at replace ' i password og lign.

Nogle der har nogle ting man bør sikre sig?
Avatar billede arne_v Ekspert
23. september 2004 - 22:03 #1
SQL injection undgår du ved at bruge Parameters i dine SQL XxxxCommand's
Avatar billede jakobandersen Nybegynder
23. september 2004 - 22:04 #2
Avatar billede bongo20 Nybegynder
23. september 2004 - 22:23 #3
Bogen ser spændende ud, men skyder nok også en del over mål i forhold til hvad jeg har brug for. Men skal da læses.

Hvordan bruger jeg parametre i min sql ?
Handler det om også at bruge stored procedures?
Avatar billede arne_v Ekspert
23. september 2004 - 22:24 #4
Nej du kan også bruge det til helt almindelige SQL SELECT og INSERT.

Vil du have et C# eller VB.NET eksempel ?
Avatar billede arne_v Ekspert
23. september 2004 - 22:25 #6
Er C# SQLServer INSERT eksempel:

        SqlCommand ins = new SqlCommand("INSERT INTO imgtest VALUES(@id,@img)", con);
        ins.Parameters.Add("@id", SqlDbType.Int);
        ins.Parameters.Add("@img", SqlDbType.Image);
        ins.Parameters["@id"].Value = 1;
        ins.Parameters["@img"].Value = imgdata;
        ins.ExecuteNonQuery();
Avatar billede bongo20 Nybegynder
23. september 2004 - 22:43 #7
Ok, hvad er det lige de parametre gør?

Skal der f.eks. være 2 linjer for hver værdi jeg sætter ind? så bliver det jo helt uoverskueligt, og jeg vil jo egentlig gerne gøre sådan;

SqlCommand ins = new SqlCommand( sqlStreng, con);

Kan det lade sig gøre?
Avatar billede bufferzone Praktikant
23. september 2004 - 22:44 #8
Der findes en lang række websteder, der giver dig mulighed for at prøve at webhacke. Disse tjenester er gode til at lære dig hvad du skal tage højte for. se f.eks.

http://www.try2hack.nl/
http://www.hackthissite.org/
http://www.hackergames.net

Der er masser af den slags sites
Avatar billede arne_v Ekspert
23. september 2004 - 22:47 #9
Det fungerer ved at du i din SQL streng sætter plads af til dine parametre,
definerer parameternes typer og så indsætter værdier.

Pointen er at det håndterer alle problemer med single quotes i data, hvad enten
det er O'Toole der er uheldig eller en ondsindet hacker.

Du kan sagtens bruge en sqlStreng variabel. Men parameterne skal stadigvæk tilføjes.
Avatar billede bongo20 Nybegynder
23. september 2004 - 22:50 #10
Det betyder vel så at jeg ikke kan bruge den samme metode til flere forskellige indsættelser i databasen ... ?
Avatar billede arne_v Ekspert
23. september 2004 - 22:52 #11
Jo.

Dem her udføres kun en gang:

        SqlCommand ins = new SqlCommand("INSERT INTO imgtest VALUES(@id,@img)", con);
        ins.Parameters.Add("@id", SqlDbType.Int);
        ins.Parameters.Add("@img", SqlDbType.Image);

Dem her udføres for hver indsættelse:

        ins.Parameters["@id"].Value = i;
        ins.Parameters["@img"].Value = imgdata;
        ins.ExecuteNonQuery();
Avatar billede bongo20 Nybegynder
23. september 2004 - 22:57 #12
En metode der bare tager en sqlstreng som input og smider det i databasen uanset hvor mange felter den berører er ikke mulig?
Avatar billede arne_v Ekspert
23. september 2004 - 22:59 #13
Du kan sagtens undlade at bruge parametre og bare have en SQL streng uden videre.

Men så skal du selv gøre noget for at undgå problemer med single quotes
i input.

Hvadenten det er O'Toole eller en hacker som forsøger SQL injection.
Avatar billede arne_v Ekspert
23. september 2004 - 23:00 #14
og et svar fra mig
Avatar billede bongo20 Nybegynder
24. september 2004 - 08:38 #15
hvis nu jeg vil lave det med alm sql strenge, hvordan replacer jeg så "hacker '" og ikke O'toole ?
Avatar billede arne_v Ekspert
24. september 2004 - 09:26 #16
Du erstatter en enkelt ' med to altså ''.

sqlstr.Replace("'","''")

Men hvis I er sikkerheds fokuserede og har en skrap tech lead, så får du
den ikke gennem code review.
Avatar billede jakobandersen Nybegynder
24. september 2004 - 09:40 #17
Hvis du sidder med en komplet SQL streng som f.eks:

SELECT * FROM table WHERE column1 = 'O'toole'

vil det ikke virke blot at escape, du bliver nødt til at evaluere hver parameter for sig selv.
Avatar billede arne_v Ekspert
24. september 2004 - 09:46 #18
Ja det var noget vrøvl.

Det skal være:

sqlstr = "SELECT * FROM table WHERE column1 = '" + navn.Replace("'","''") + "'";
Avatar billede bongo20 Nybegynder
28. september 2004 - 22:19 #19
Tak for hjælpen alle sammen :o)
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

IT-JOB

Skal lukkes AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Teamleder til AL Sydbanks GDPR & Tech Regulation i Aabenraa

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Applikationsarkitekt til Forsvaret nye Digitale Backbone

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Faglig teamleder til styring og kvalitetssikring for Rekvirentteam i Forsvaret