Avatar billede lasserasch Juniormester
21. maj 2005 - 13:49 Der er 4 kommentarer og
1 løsning

Fejl i ASP/MySQL kode.

Hejsa.

Stilte samme spørgsmål inat! Fik dog intet svar! Derfor prøver jeg igen!


Jeg har følgende kode, som ikke virker for mig!
Det er min MySQL forespørgelse som ikke fungerer.
Hvis jeg undlader at bruge "WHERE brugernavn =" i min forespørgelse virker det fint. Men bruger jeg dette kommer inge records frem. Heller ikke selvom jeg bruger f.eks. "lasse" i stedet for "" & strbrugernavn & "".

Laver jeg samme forespørgelse på min PHPMyadmin adgang til min MySQL database, virker det fint. Men ikke i min kode.
Jeg får en fejl, hvor den siger at der ikke blev fundet nogle records.


Er det mig der laver et eller andet forkert, eller hvordan?

Selve database forbindelsen laver jeg gennem en include fil, og den fungerer fint! Nedestående kode, er 100% den samme som jeg bruger på siden. Jeg har ikke rettet noget, fjernet brugernavn eller password, da disse jo ligger i min include fil.


Håber på hurtigt svar!


MVh.
Lasse Rasch

Her kommer så min Sourcekode :


--------------------------

<!--#include file="includes/config.asp"-->
<!--#include file="includes/open_forbindelse.asp"-->


<%
strbrugernavn = request.form("brugernavn")
strPassword = request.form("password")
%>


<%

if (strbrugernavn="") then ' Der er ikke indtastet bruger ID
  session("msg") = "<br><font size=2><center> Brugernavn eller Password er ikke indtastet korrekt! </center>"
  Response.Redirect "default.asp"

'Søger i databasen efter brugernavn og password
'-----------------------------------------------------
else 'Søger databasen igennem
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT password FROM brugere WHERE brugernavn = "" & strbrugernavn & """,strConn
if rs("password") = strPassword then
session("login_access") = TRUE
Set rs = Nothing
response.Redirect "forside.asp"
end if
session("msg") = "<br><font size=2><center>Forkert brugernavn eller Password! </center>"
strbrugernavn = ""
strPassword = ""
Set rs = Nothing
response.Redirect "default.asp"


end if

%>

<!--#include file="includes/close_forbindelse.asp"-->

-------------------------
Avatar billede ranglen Nybegynder
21. maj 2005 - 14:06 #1
prøv med

rs.Open "SELECT password FROM brugere WHERE brugernavn = '" & strbrugernavn & "'",strConn
Avatar billede ranglen Nybegynder
21. maj 2005 - 14:07 #2
for at undgå et stort sikkerhedshul:

strbrugernavn = Replace(request.form("brugernavn"), "'", "''")
Avatar billede lasserasch Juniormester
21. maj 2005 - 14:17 #3
Hej ranglen.


Var faktisk selv ved at læse noget om det på en hjemmeside. Er det korrekt antaget at tegnet ' skal sættes før og efter en variabel, hvis denne står i en SQL streng?


Du skal nok få points, du skal dog lige give et svar i stedet for en kommentar.
JEg har testet og det virker.

Hvorfor skal jeg bruge : strbrugernavn = Replace(request.form("brugernavn"), "'", "''")


og ikke : strbrugernavn = request.form("brugernavn")


Er det et sikkerhedsproblem?
Avatar billede sukos Juniormester
22. maj 2005 - 11:51 #4
Du fik da svar! :O)

http://www.eksperten.dk/spm/619406

rs.Open "SELECT password FROM brugere WHERE brugernavn = "" & strbrugernavn & """,strConn
SKAL være:
rs.Open "SELECT password FROM brugere WHERE brugernavn = '" & strbrugernavn & "'",strConn

Anyway, en bruger kan manipulere din sql forespørgsel, hvis ikke tegnet ' bliver escapet
strbrugernavn = request.form("brugernavn")

I feltet brugernavn er så indtastet:

noget' OR brugernavn = 'admin

sql vil så komme til at se så'n ud, (omskrevet):

rs.Open "SELECT password FROM brugere WHERE brugernavn = 'noget' OR brugernavn = 'admin'",strConn

Derfor tænkte jeg også på om der noget mysql_escape_string, altså om du kan bruge den i asp også?
Avatar billede lasserasch Juniormester
21. november 2005 - 03:04 #5
lukket
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