Avatar billede spile Nybegynder
28. maj 2008 - 12:08 Der er 9 kommentarer og
2 løsninger

Error messages

hvordan kan jeg forhindre at error messages fra sql server bliver vist på besøgends sider. ? det er mest detajler jeg ikke vil have vist pga sql injektion..
Avatar billede sylvesternielsen Nybegynder
28. maj 2008 - 12:12 #1
Det er ikke din SQL server som viser fejlen, men din hjemmeside kode.

Du skal finde de steder i koden hvor den udskriver SQL fejlen, og bede den om at lade være. Jeg kan ikke være meget mere specifik med de detaljer du har i spørgsmålet, men nu ved du da hvor du skal lede. :-)
Avatar billede fennec Nybegynder
28. maj 2008 - 12:14 #2
Som sylvesternielsen nævner er det ikke din DB du skal efter, men din kode (asp, .Net, PHP eller hvad du nu har kodet i).

Her skal du have en try/catch omkring dine DB kald.
Avatar billede spile Nybegynder
28. maj 2008 - 12:31 #3
Okis.tænkte bare at jeg kunne forhindre min sql server i at sende fejl videre det er jo en kæmpe hjælp til sql injektion med lidt gode tilrådelige fejl meddelser. -:)
Avatar billede 2c Nybegynder
29. maj 2008 - 11:06 #4
Hvis du skriver i asp.net f.eks., så pakker du den kode der kalder sql'en ind i en try catch

således:
Try{
//Kode der kalder database her
}
catch(Exception)
{
//udskriv din fejlbesked her
}
Avatar billede fennec Nybegynder
29. maj 2008 - 11:59 #5
spile >>
Tror også udviklerne ville blive ked af det, hvis de ikke kunne få de rigtige fejlmeddelser fra databasen. Jeg ville ihvertfald finde det nærmeste pind og slå vores DB ansvarlig i hoved indtil han fik det skiftet tilbage :o)

Men du bliver nød til at gøre det i koden, evt lave en funktion som du sender alle DB kald igennem, så du sikre dig at alle fejl bliver fanget, og du ikke glemmer try/catch et sted.

Men hvilket sprog er din kode skrevet i??
Avatar billede spile Nybegynder
29. maj 2008 - 12:10 #6
Det er lavet i ASP tænkte bare at der måske var en funktion i evt odbc hvor man kunne slå det fra og til syntes at jeg har læst et sted at man kunne få den til at kun vise fejl meddelser til admin eller sådan...
men så må man jo gå den tunge vej
men der har jeg denne men den burde vel kunne sættes ind i toppen..
If Conn.Errors.Count > 0 THEN
        sqlfejl()
        response.end
        end if

hvis i prøver at google script .js cn
så kan i se at der ca. er 12.000 danske hjemme sider der bøvler med sql injection...
Avatar billede fennec Nybegynder
29. maj 2008 - 12:55 #7
Nej, du bliver nød til at gøre det hver gang du lavet et kald til databasen. F.eks noget i denne stil:

function getDbData(fSQL)
  on error resume next '<-- Start fejlhåndtering
    set getDbData = conn.execute(fSQL)
    if err.number <> 0 then
      response.write "Der er sket en fejl i databasen"
      response.end
    end if
  on error goto 0 '<-- Reset fejlhåndtering til default
end function

set rs1 = getDbData("select * from enTabel")
set rs2 = getDbData("select * from enAndenTabel")
Avatar billede spile Nybegynder
29. maj 2008 - 13:17 #8
jeps havde lige glemt
On error resume next
men så viker dette også fint
    Set List =     Conn.Execute (SQLQuery)
    If Conn.Errors.Count > 0 THEN
        sqlfejl()
        response.end
        end if

Nå jeg lukker og slukker og siger tak
Avatar billede spile Nybegynder
29. maj 2008 - 13:18 #9
takker
Avatar billede spile Nybegynder
29. maj 2008 - 13:18 #10
du kan evt smide et svar så kan jeg give dig point fennec
Avatar billede fennec Nybegynder
29. maj 2008 - 13:39 #11
.o) <-- One Eyed Jack
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
Computerworld tilbyder specialiserede kurser i database-management

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