Avatar billede quarkb Nybegynder
29. oktober 2015 - 21:56 Der er 13 kommentarer og
1 løsning

SQL sikkerhed

Jeg har et site som er ændret fra MS access database til MS SQL, men jeg oplever at nogle af felterne i database er blevet hacked. Det er felter med typen nvarchar(MAX) er har været ramt. Hvad har jeg overset?
Avatar billede arne_v Ekspert
30. oktober 2015 - 01:52 #1
Forventer du at nogen kan finde problemet udfra deb beskrivelse?
Avatar billede quarkb Nybegynder
30. oktober 2015 - 10:43 #2
Nej ikke direkte, men måske om det er min kode eller SQL opsætning der er problemet

Nedenstående lidt kode:


Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application( "SQLPath" )

sql = "SELECT * FROM [MainPages] WHERE Afdeling = '" & afd & "'"
   
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql, conn, 3,3

if rs.bof or rs.eof then
Response.write "<b>Under opbygning</b>"
else

response.write rs.Fields("HovedTekst")


rs.Close
set rs = nothing
conn.Close
set conn = nothing
Avatar billede quarkb Nybegynder
30. oktober 2015 - 22:15 #4
keysersoze, den første del af artiklen har jeg fået styr på, men den sidste del med SQL kald har jeg ikke helt fat i, dette er et af mine SQL kald:

find = Request.Form("find")
       
sql = "SELECT * FROM [Medarbejder] WHERE Navn LIKE '%" & find & "%' OR Afdeling LIKE '%" & find & "%' OR CPR LIKE '%" & find & "%' OR MedarbejderNr LIKE '%" & find & "%' ORDER by Navn"
           
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application( "SQLPath" )
           
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql, conn, 3,3
Avatar billede quarkb Nybegynder
30. oktober 2015 - 22:37 #5
Alle siderne kræver man er logget ind, så som sikkerhed har jeg følgene i toppen af alle mine sider:


if session("loggedinadmin") = false then
Response.Redirect("/admin/default.asp")
end if

I logon siden bliver session("loggedinadmin") sat til true hvis login er valideret og fundet OK.
Avatar billede arne_v Ekspert
31. oktober 2015 - 02:37 #6
Den kode er jo ikke paa nogen maade beskyttet mod SQL injection.
Avatar billede quarkb Nybegynder
01. november 2015 - 14:38 #7
Hvordan beskytter jeg så mit SQL kald mod SQL injection?

find = Request.Form("find")
       
sql = "SELECT * FROM [Medarbejder] WHERE Navn LIKE '%" & find & "%' OR Afdeling LIKE '%" & find & "%' OR CPR LIKE '%" & find & "%' OR MedarbejderNr LIKE '%" & find & "%' ORDER by Navn"
           
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application( "SQLPath" )
           
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql, conn, 3,3
Avatar billede arne_v Ekspert
01. november 2015 - 16:14 #8
Bedste loesning er at bruge parameters!
Avatar billede quarkb Nybegynder
01. november 2015 - 17:57 #9
Kan ud evt. komme med et eksempel på hvordan det skal se ud?
Avatar billede keysersoze Guru
01. november 2015 - 21:36 #10
Artiklen viser eksempler på brug med parameters.
Avatar billede quarkb Nybegynder
20. november 2015 - 23:54 #11
Jeg er ved at få en lille smule styr på brug af parameters, jeg har dog lige et enkelt spørgsmål.

hvis jeg ønsker at søge på en del af teksten i et database felt brugte jeg før navn = '" & soegstreng & "'" hvordan håndteres det med parameters?
Avatar billede keysersoze Guru
21. november 2015 - 00:16 #12
Jeg vil gætte på at du benytte LIKE og ikke det du lige skrev - det vil i hvert fald ikke virke efter hensigten. Bortset fra det er der ingen syntaksmæssig forskel i forhold til parameters på at benytte LIKE og =. Fx;

... column LIKE '%' + @query + '%'...
Avatar billede quarkb Nybegynder
21. november 2015 - 00:38 #13
Jeg har fundet denne løsning:  column like ? + '%'", som sådan set er den samme som keysersoze.

Kan du fortælle mig hvad betydning tallene 200, 1 ,50 har?

Cmd.Parameters.Append(Cmd.CreateParameter("@by", 200, 1, 50, Request.Querystring("by")))

PS. jeg her helt ny i brugen af parameter
Avatar billede quarkb Nybegynder
21. november 2015 - 01:01 #14
Jeg har selv fundet en god artikel som dækker mit sidste spørgsmål: http://www.w3schools.com/asp/met_comm_createparameter.asp

Mange tak for din hjælp keysersoze.
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

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