Avatar billede flax Nybegynder
01. april 2003 - 00:51 Der er 8 kommentarer og
1 løsning

Ændre sql sætning

Jeg er ved at flytte en .mdb database til min mysql.

.mdb databasen bruger følgende:

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM Tpassword where Fpassword='"& fpassword &"' AND Fuser='" & fuser & "' AND Faktiv=TRUE" , Conn, 1, 3

Og når jeg så hiver den over til mysql, laver den fejl ved Faktiv=TRUE" , Conn, 1, 3 <- altså efter TRUE"

Og jeg vil stadig væk godt have denne funktion med, nogen der kan hjælpe?
Avatar billede mortrr Praktikant
01. april 2003 - 00:55 #1
Skriver den ikke hvilken fejl?

Fjern ,1,3
Avatar billede flax Nybegynder
01. april 2003 - 01:11 #2
du får lige hele koden ok?
(Det fra toppen)

<%
Response.Expires = 0                        
fuser = request.Form("Fuser")             
fpassword = request.Form("Fpassword")       
session("godkendt") = ""                   
ip = Request.ServerVariables("REMOTE_ADDR")
%>
<!--#include file="database.asp" -->
<html>

    <head>
        <title>main</title>
        <style type="text/css"><!--
            a:hover { color: #000; font-style: normal; font-size: 9pt; font-family: Geneva, Verdana, Arial; text-decoration: underline }
            a:link { color: #000; font-style: normal; font-size: 9pt; font-family: Geneva, Verdana, Arial; text-decoration: none }
            a:visited { color: #000; font-style: normal; font-size: 9pt; font-family: Geneva, Verdana, Arial; text-decoration: none }
            body { color: #000; font-style: normal; font-size: 9pt; font-family: Geneva, Verdana, Arial }
            td { color: #000; font-style: normal; font-weight: normal; font-size: 9pt; font-family: Geneva, Verdana, Arial }-->
        </style>
        <style type="text/css">
body {
    scrollbar-face-color:5DA91D;
}
</style>
    </head>

    <body topmargin="0" leftmargin="0" bgcolor="#EDFBF1">
<%
'hvis forsøg 3 ikke er nået sker der ikke noget siden bliver vist (husk vi tæller 0,1,2)
IF session("forsøg") >= 2 then   
end if       



    '* se om der er noget i db som passer på "password" fra side 1 ***************

SQLstmt = "SELECT * FROM tpassword where Fpassword='"& fpassword &"' AND Fuser='" & fuser & AND Faktiv=TRUE" , Conn, 1, 3
'response.write SQLstmt
Set rs = my_conn.Execute(SQLstmt)
       
    set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM Tpassword where Fpassword='"& fpassword &"' AND Fuser='" & fuser & "' AND Faktiv=TRUE" , Conn, 1, 3
 

       
        '* HVIS DER IKKE ER NOGLE DER KAN BUGES, giver vi dem 1 ekstra login fejl, og skriver  HTTP "Fejl....." *
     
      If rs.EOF And rs.BOF Then
      session("godkendt") = FALSE
      session("forsøg") = session("forsøg") +1
      end if
         
      If session("godkendt") = FALSE then
         
          IF session("forsøg") >= 3 then
          a=0
          else
%>
Avatar billede flax Nybegynder
01. april 2003 - 03:46 #3
En anden fejl, som du kan se var det en gammel fil jeg har pastet til dig, sorry.

Fejlen var at jeg havde sat WHERE efter ORDER by og denne skulle være før... Sorry
Avatar billede mortrr Praktikant
01. april 2003 - 07:26 #4
Det kan jo ske.

Husk - du må ALDRIG benytte en request direkte til forespørgel i databasen, uden at erstatte fx ' med ''. Ellers kan enhver logge ind på dine sider.

fuser = request.Form("Fuser")             
fpassword = request.Form("Fpassword")       
fuser = replace(fuser,"'","''")
fpassword = replace(fpassword,"'","''")
Avatar billede flax Nybegynder
01. april 2003 - 07:30 #5
hvordan det? Fedt du siger det, men praktisk ,hvordan ville det kunne lade sig give sig?
Avatar billede flax Nybegynder
01. april 2003 - 07:32 #6
Det kræver at folk ved hvad? tabel navn?
Avatar billede flax Nybegynder
01. april 2003 - 07:35 #7
Avatar billede mortrr Praktikant
01. april 2003 - 07:41 #8
Nej - man behøver ikke vide noget.
Så længe siden bare kontrollerer om der ikke er eof, så kan man nøjes med at skrive
' or ''='
i brugernavn og password.

Desuden kunne man, hvis man lærer lidt om hvilken database-server det drejer sig om, indsætte kommandoer der sletter data/tabeller, tilføjer en ny bruger, eller lukker ned for databasen.

Faktisk er den hyppigste fejl at folk ikke kontrollerer om ID'er rent faktisk er et tal, men bare bruger
sql="select tekst fra side where id=" & request("id")
Så det står helt åbent at lægge alle mulige kommandoer ind.

Søg på fx google.com efter "sql injection", hvis du vil lære mere om det.
De første hits er gode informationer.
Avatar billede flax Nybegynder
01. april 2003 - 07:44 #9
Super. I will!
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
Kurser inden for grundlæggende programmering

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