Avatar billede mrbart Nybegynder
17. september 2007 - 17:54 Der er 18 kommentarer og
1 løsning

SQL-Injections af ASP-Side

Hej..

Jeg er Total kode-analfabeter..

jeg har en komplet side, hvor jeg er blevet angrebet af SQL-Injections et par gange nu.. Men nu ska det være nok..

Så jeg ville høre om nogle herinde, ku hjælpe mig med at sikre min hjemmeside mod dette..

Her kommer koden til min forside... Så hvis nogen kan hjælpe, og forklare hva jeg skal gøre, vil det være perfekt..


<html>
<head>
<title>NightRiders.dk - DK's nye bilside - Forside</title>
<meta name="Generator" content="Microsoft FrontPage 5.0">
<link href="stylesheets/nightriders.css" rel="stylesheet" type="text/css">
</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" width="779">
    <tr>
        <td class="td" colspan="2"><img alt="" src="images/Nightriders_01.jpg"></td>
    </tr>
    <tr>
        <td class="td" colspan="2">
        <table cellpadding="0" cellspacing="0">
            <tr>
                <td class="td"><img alt="" src="images/Nightriders_02.jpg"></td>
                <td class="td" style="background-image:url('images/Nightriders_12.gif');font-size:8pt" valign="middle" width="445"><b>
                ::&nbsp;&nbsp;<a href="default.asp" style="font-size:8pt" title="Forsiden">HOME</a>&nbsp;
                ::&nbsp;&nbsp;<a href="medlem/" style="font-size:8pt" title="Medlem">MEDLEM</a>&nbsp;
                ::&nbsp;&nbsp;<a href="medlem/medlemmer.asp" style="font-size:8pt" title="Medlemmer">MEDLEMMER</a>&nbsp;
                ::&nbsp;&nbsp;<a href="galleri/" style="font-size:8pt" title="Galleri">GALLERI</a>&nbsp;
                ::&nbsp;&nbsp;<a href="traef/" style="font-size:8pt" title="Tr&aelig;f">TR&AElig;F</a>&nbsp;
                ::&nbsp;&nbsp;<a href="forum/" style="font-size:8pt" title="Forum">FORUM</a>&nbsp;
                <% If Session("brugernavn") = "" Then %>::&nbsp;&nbsp;LOG UD ::<% Else %>
                ::&nbsp;&nbsp;<a href="login/log-ud.asp" style="font-size:8pt" title="Log ud">LOG UD</a> ::</b><% End If %></td>
            </tr>
        </table></td>
    </tr>
    <tr>
        <td class="td" colspan="2"><img alt="" src="images/Nightriders_08.gif"></td>
    </tr>
    <tr>
        <td class="td" valign="top"><img alt="" src="images/Nightriders_09.gif"><br>
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td class="td" valign="top" width="31"><img alt="" src="images/Nightriders_11.gif"></td>
                <td class="td" valign="top" width="213">
                <% Set ConnObj = Server.CreateObject("ADODB.Connection") %>
                <% MyConnStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/nyheder.mdb") %>
                <% ConnObj.Open(MyConnStr) %>
       
                <% strSQL = "SELECT TOP 5 * FROM nyheder " %>
                <% strSQL = strSQL & " ORDER BY id DESC " %>
                <% Set rsnyhed = ConnObj.Execute(strSQL) %>
       
                <% If rsnyhed.BOF Or rsnyhed.EOF Then %>
                <p>Ingen nyheder i &oslash;jeblikket!<br><br>
                Nightriders.dk beklager.</p>
               
                <% If Session("brugernavn") = "Bart" Then %>
                <p><a href="nyheder/ny-nyhed.asp" title="Ny nyhed">Ny nyhed</a></p>
                <% Else %>
                <% End If %>
                <% Else %>
                <font size="3"><b>Seneste nyheder:</b></font>
                <% Do Until rsnyhed.BOF Or rsnyhed.EOF %>
                <br><br>
                <font size="1"><b><% = rsnyhed("dato") %></b></font><br>
                <a href="nyheder/se-nyhed.asp?id=<%=rsnyhed("id")%>" title="Se mere"><% = LEFT(rsnyhed("nyhed"), 40) %>...</a><br>
                -----------------------------------
                <% rsnyhed.MoveNext %>
                <% Loop %>
                <br><br><center><a href="nyheder/" title="Alle nyheder">Alle nyheder</a></center>
                <% End If %></td>
                <td class="td" style="background-image:url('images/Nightriders_10.gif')" valign="top" width="30"></td>
            </tr>
        </table></td>
        <td class="td" valign="top" width="708"><b><center><font size="3">Velkommen til NightRiders.dk!</font></center></b></p>
        <% Set ConnObj = Server.CreateObject("ADODB.Connection") %>
        <% MyConnStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/velkommen.mdb") %>
        <% ConnObj.Open(MyConnStr) %>
       
        <% strSQL = "SELECT * FROM velkommen " %>
        <% strSQL = strSQL & " ORDER BY id ASC " %>
        <% Set rs = ConnObj.Execute(strSQL) %>
       
        <% If rs.BOF Or rs.EOF Then %>
        <p align="center"><b><font color="#FF0000">Ingen velkomsttekst i &oslash;jeblikket!<br><br>
        Nightriders.dk beklager.</b></font><br><br>
        <% If Session("brugernavn") = "Bart" Then %>
        <a href="velkommen/ny-velkomst.asp" title="Ny velkomsttekst">Ny velkomsttekst</a></p>
        <% Else %>
        <% End If %>
        <% Else %>

        <% Do Until rs.BOF Or rs.EOF %>

        <% Dim strTekst %>
        <% strTekst=rs("tekst") %>
        <% strtekst=Replace(strTekst,vbCrLf,"<BR>") %>
        <% strtekst=Replace(strTekst,":)","<img src=images/smilies/smile.gif>") %>
        <% strtekst=Replace(strTekst,";)","<img src=images/smilies/wink.gif>") %>
        <% strtekst=Replace(strTekst,":D","<img src=images/smilies/laugh.gif>") %>
        <% strtekst=Replace(strTekst,":P","<img src=images/smilies/tongue.gif>") %>
        <% strtekst=Replace(strTekst,":8","<img src=images/smilies/glasses.gif>") %>
        <% strtekst=Replace(strTekst,":K:","<img src=images/smilies/kiss.gif>") %>
        <% strtekst=Replace(strTekst,":$","<img src=images/smilies/blush.gif>") %>
        <% strtekst=Replace(strTekst,":@","<img src=images/smilies/angry.gif>") %>
        <% strtekst=Replace(strTekst,":'(","<img src=images/smilies/cry.gif>") %>
        <% strtekst=Replace(strTekst,":A:","<img src=images/smilies/angel.gif>") %>
        <% strtekst=Replace(strTekst,":L:","<img src=images/smilies/luvu.gif>") %>

        <p><table align="center" cellpadding="1" cellspacing="2" width="95%">
            <tr>
                <td class="td" colspan="3"><b><% = rs("overskrift") %></b></td>
            </tr>
            <tr>
                <td class="td" colspan="3"><p align="justify"><% = strTekst %></td>
            </tr>
            <% If Session("brugernavn") = "Bart" Then %>
            <tr>
                <td align="left" class="td"><a href="velkommen/ny-velkomst.asp" title="Ny velkomsttekst">Opret ny</a></td>
                <td align="center" class="td"><a href="velkommen/rediger-velkomst.asp?id=<%=rs("id")%>" title="Rediger tekst">Rediger tekst</a></td>
                <td align="right" class="td"><a href="velkommen/slet-velkomst.asp?id=<%=rs("id")%>" title="Slet tekst">Slet tekst</a></td>
            </tr>
            <% Else %>
            <% End If %>
        </table>
        <% rs.MoveNext %>
        <% Loop %>
        <% End If %></p>
        <p><form action="nyhedsbrev/indsaet-info.asp" method="post">
        <table align="center" cellpadding="1" cellspacing="2" width="95%">
            <tr>
                <td align="center" class="td" colspan="2"><b>Tilmeld/frameld nyhedsbrevet<b></td>
            </tr>
            <tr>
                <td align="center" class="td" width="50%"><b>Navn:</b></td>
                <td class="td"><input name="navn" size="25" tabindex="1" title="Dit navn her" type="text"></td>
            </tr>
            <tr>
                <td align="center" class="td" width="50%"><b>Email:</b></td>
                <td class="td"><input name="email" size="25" tabindex="2" title="Din emailadresse her" type="text"></td>
            </tr>
            <tr>
                <td align="center" class="td" colspan="2"><input name="submit" tabindex="3" title="Tilmeld/frameld nyhedsbrevet" type="submit" value="Tilmeld/frameld"></td>
            </tr>
        </table>
        </form></p>
        <% If Session("brugernavn") = "Bart" Then %>
        <p><table align="center" cellpadding="1" cellspacing="2" width="95%">
            <tr>
                <td align="center" class="td"><a href="nyhedsbrev/lav.asp" title="Udsend nyhedsbrev">Udsend nyhedsbrev</a></td>
                <td align="center" class="td"><a href="nyhedsbrev/se-tilmeldte.asp" title="Se tilmeldte">Se tilmeldte</a></td>
            </tr>
        </table></p>
        <% End If %></td>
    </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td align="right" class="td" height="107" style="background-image:url('images/bund.gif');color:#C0C0C0;font-size:8pt;padding-top:55" valign="top" width="778">
        <b>::&nbsp;&nbsp;<a href="sponsorer/" style="color:#C0C0C0;font-size:8pt" title="Sponsorer">SPONSORER</a>&nbsp;
        ::&nbsp;&nbsp;<a href="crew/" style="color:#C0C0C0;font-size:8pt" title="Crewet">CREWET</a>&nbsp;
        ::&nbsp;&nbsp;<a href="kontakt/" style="color:#C0C0C0;font-size:8pt" title="Kontakt">KONTAKT</a>&nbsp;
        ::&nbsp;&nbsp;<a href="links/" style="color:#C0C0C0;font-size:8pt" title="Links">LINKS</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../afstemning/" style="color:#C0C0C0;font-size:8pt" title="Afstemning">AFSTEMNING</a>&nbsp;
        ::&nbsp;&nbsp;</b></td>
    </tr>
</table>

<!-- Chart Basis HTML kode start v003 --><br>
&nbsp;<script language="javascript" type="text/javascript">
<!--
  document.write('<a href="http://www.chart.dk/ref.asp?ct=v003&id=98332" target="_blank">');
  var myref; myref=document.referrer; if(top.document.referrer!=null) myref=top.document.referrer;
  document.write('<img src="http://cluster.chart.dk/chart.asp?id=98332&style=0&secID=' + Math.random()*10000000 + '&ref=' + escape(myref) + '" border="0" alt="Chart.dk"><');
  document.write('/a>');
//-->
</script><noscript><a href="http://www.chart.dk/ref.asp?ct=v003&amp;id=98332" target="_blank"><img src="http://cluster.chart.dk/chart.asp?id=98332&amp;style=0&amp;secID=1" border="0" alt="Chart.dk"></a></noscript><!-- Chart Basis HTML kode slut v003 --></body></html>



Jeg håber meget snart at høre fra nogle som vil hjælpe..

Mvh.

Bart
Avatar billede keysersoze Ekspert
17. september 2007 - 18:26 #1
Umiddelbart kan jeg ikke se noget i ovenstående hvor SQL injections kan benyttes - der er kun to SQL-statements og ingen af dem benytter sig af brugerinput.

Du kan læse lidt om det her; http://activedeveloper.dk/articles/370/ men generelt kræver det faktisk ikke særlig meget - alt du behøver er at tage højde for tegnet ' og det kan gøres på følgende måde;

i stedet for fx

SQL = "SELECT id, navn FROM tabel WHERE enkolonne = "' & Request.Form("enform") & "'"

skal du køre en replace på den del der kommer fra brugere;

SQL = "SELECT id, navn FROM tabel WHERE enkolonne = "' & Replace("" & Request.Form("enform"),"'","''") & "'"

Og det samme gør sig gældende for INSERT og UPDATE.
Avatar billede mrbart Nybegynder
17. september 2007 - 18:31 #2
Her kommer fra min Login-Side...

Jeg ved at der er blevet brugt SQL-injections på den.. havde os en til at teste den..

Håber nogle kan hjælpe nu...

<html>
<head>
<title>NightRiders.dk - DK's nye bilside - Log ind</title>
<meta name="Generator" content="Microsoft FrontPage 5.0">
<link href="../stylesheets/nightriders.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
function Checkform(thisform) {
    // Startværdier
    strError = 'Der opstod følgende fejl:\n\n';
    intError = 0;
if (thisform.brugernavn.value == "")
    {
    strError = strError + 'BRUGERNAVN! - Du kan jo ikke logge ind uden brugernavn!\n'
    intError = 1;
    thisform.brugernavn.focus();
    }
if (thisform.brugernavn.value == "' or '")
    {
    strError = strError + 'BRUGERNAVN! - Ingen SQL Injections, tak!\n'
    intError = 1;
    thisform.brugernavn.focus();
    }
if (thisform.brugernavn.value == "'or'")
    {
    strError = strError + 'BRUGERNAVN! - Ingen SQL Injections, tak!\n'
    intError = 1;
    thisform.brugernavn.focus();
    }
if (thisform.adgangskode.value == "")
    {
    strError = strError + 'ADGANGSKODE! - Du kan jo ikke logge ind uden adgangskode!\n'
    intError = 1;
    thisform.adgangskode.focus();
    }
if (thisform.adgangskode.value == "' or '")
    {
    strError = strError + 'ADGANGSKODE! - Ingen SQL Injections, tak!\n'
    intError = 1;
    thisform.adgangskode.focus();
    }
if (thisform.adgangskode.value == "'or'")
    {
    strError = strError + 'ADGANGSKODE! - Ingen SQL Injections, tak!\n'
    intError = 1;
    thisform.adgangskode.focus();
    }
if (intError == 1) {
    alert(strError)
    return false;
    }
}
--></script>
</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" width="779">
    <tr>
        <td class="td" colspan="2"><img src="../images/Nightriders_01.jpg"></td>
    </tr>
    <tr>
        <td class="td" colspan="2">
        <table cellpadding="0" cellspacing="0">
            <tr>
                <td class="td"><img src="../images/Nightriders_02.jpg"></td>
                <td class="td" style="background-image:url('../images/Nightriders_12.gif');font-size:8pt" valign="middle" width="445"><b>
                ::&nbsp;&nbsp;<a href="../default.asp" style="font-size:8pt" title="Forsiden">HOME</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../medlem/" style="font-size:8pt" title="Medlem">MEDLEM</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../medlem/medlemmer.asp" style="font-size:8pt" title="Medlemmer">MEDLEMMER</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../galleri/" style="font-size:8pt" title="Galleri">GALLERI</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../traef/" style="font-size:8pt" title="Træf">TRÆF</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../forum/" style="font-size:8pt" title="Forum">FORUM</a>&nbsp;
                <% If Session("brugernavn") = "" Then %>::&nbsp;&nbsp;LOG UD ::<% Else %>
                ::&nbsp;&nbsp;<a href="../login/log-ud.asp" style="font-size:8pt" title="Log ud">LOG UD</a> ::</b><% End If %></td>
            </tr>
        </table></td>
    </tr>
    <tr>
        <td class="td" colspan="2"><img src="../images/Nightriders_08.gif"></td>
    </tr>
    <tr>
        <td class="td" valign="top"><img src="../images/Nightriders_09.gif"><br>
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td class="td" valign="top" width="31"><img src="../images/Nightriders_11.gif"></td>
                <td class="td" valign="top" width="213">
                <% Set ConnObj = Server.CreateObject("ADODB.Connection") %>
                <% MyConnStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/nyheder.mdb") %>
                <% ConnObj.Open(MyConnStr) %>
       
                <% strSQL = "SELECT TOP 5 * FROM nyheder " %>
                <% strSQL = strSQL & " ORDER BY id DESC " %>
                <% Set rsnyhed = ConnObj.Execute(strSQL) %>
       
                <% If rsnyhed.BOF Or rsnyhed.EOF Then %>
                Ingen nyheder i øjeblikket!<br><br>
                Nightriders.dk beklager.
                <% Else %>
                <font size="3"><b>Seneste nyheder:</b></font>
                <% Do Until rsnyhed.BOF Or rsnyhed.EOF %>
                <br><br>
                <font size="1"><b><% = rsnyhed("dato") %></b></font><br>
                <a href="../nyheder/se-nyhed.asp?id=<%=rsnyhed("id")%>" title="Se mere"><% = LEFT(rsnyhed("nyhed"), 40) %>...</a><br>
                -----------------------------------
                <% rsnyhed.MoveNext %>
                <% Loop %>
                <br><br><center><a href="../nyheder/" title="Alle nyheder">Alle nyheder</a></center>
                <% End If %></td>
                <td class="td" style="background-image:url('../images/Nightriders_10.gif')" valign="top" width="30"></td>
            </tr>
        </table></td>
        <td class="td" valign="top" width="708"><center><font size="3"><b>Log ind:</b></font></center></p>
        <form action="tjek-login.asp?NewURL=<%=Request("newurl")%>" method="post" onsubmit="return Checkform(this);">
        <table align="center" cellpadding="1" cellspacing="2" width="95%">
            <tr>
                <td width="100"><b>Brugernavn:</b></td>
                <td><input name="brugernavn" size="30" tabindex="1" title="Brugernavn" type="text"></td>
            </tr>
            <tr>
                <td width="100"><b>Adgangskode:</b></td>
                <td><input name="adgangskode" size="30" tabindex="2" title="Adgangskode" type="password"></td>
            </tr>
            <tr>
                <td align="center" colspan="2"><input name="submit" tabindex="3" title="Log ind" type="submit" value="Log ind"></td>
            </tr>
        </table></form></td>
    </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td align="right" class="td" height="107" style="background-image:url('../images/bund.gif');color:#C0C0C0;font-size:8pt;padding-top:55" valign="top" width="778">
        <b>::&nbsp;&nbsp;<a href="../sponsorer/" style="color:#C0C0C0;font-size:8pt" title="Sponsorer">SPONSORER</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../crew/" style="color:#C0C0C0;font-size:8pt" title="Crewet">CREWET</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../kontakt/" style="color:#C0C0C0;font-size:8pt" title="Kontakt">KONTAKT</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../links/" style="color:#C0C0C0;font-size:8pt" title="Links">LINKS</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../afstemning/" style="color:#C0C0C0;font-size:8pt" title="Afstemning">AFSTEMNING</a>&nbsp;
        ::&nbsp;&nbsp;</b></td>
    </tr>
</table>

</body>
</html>
Avatar billede driis Nybegynder
17. september 2007 - 18:52 #3
Den SQL injection der kan ske, sker ikke i den kode du har postet. Den sker på siden "tjek-login.asp", som din login side poster tilbage til.

På denne side skal du validere inputtet, at det ikke indeholder SQL strengterminering, ' (enkelt-apostrof), eller sørge for at escape det. Husk at dette skal ske Serverside.

I det kode du har postet prøver du at validere client side. Det hjælper reelt ikke da koden kører på klienten, og en potentiel angriber kan jo vælge ikke at eksekvere scriptet.
Avatar billede mrbart Nybegynder
17. september 2007 - 18:59 #4
Så prøver jeg igen..:)

Kan du så fortælle mig hvor det er herpå??

Er det nok at fjerne der der ' ??

<html>
<head>
<title>NightRiders.dk - DK's nye bilside - Tjek login</title>
<meta name="Generator" content="Microsoft FrontPage 5.0">
<link href="../stylesheets/nightriders.css" rel="stylesheet" type="text/css">
</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" width="779">
    <tr>
        <td class="td" colspan="2"><img src="../images/Nightriders_01.jpg"></td>
    </tr>
    <tr>
        <td class="td" colspan="2">
        <table cellpadding="0" cellspacing="0">
            <tr>
                <td class="td"><img src="../images/Nightriders_02.jpg"></td>
                <td class="td" style="background-image:url('../images/Nightriders_12.gif');font-size:8pt" valign="middle" width="445"><b>
                ::&nbsp;&nbsp;<a href="../default.asp" style="font-size:8pt" title="Forsiden">HOME</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../medlem/" style="font-size:8pt" title="Medlem">MEDLEM</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../medlem/medlemmer.asp" style="font-size:8pt" title="Medlemmer">MEDLEMMER</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../galleri/" style="font-size:8pt" title="Galleri">GALLERI</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../traef/" style="font-size:8pt" title="Træf">TRÆF</a>&nbsp;
                ::&nbsp;&nbsp;<a href="../forum/" style="font-size:8pt" title="Forum">FORUM</a>&nbsp;
                <% If Session("brugernavn") = "" Then %>::&nbsp;&nbsp;LOG UD ::<% Else %>
                ::&nbsp;&nbsp;<a href="../login/log-ud.asp" style="font-size:8pt" title="Log ud">LOG UD</a> ::</b><% End If %></td>
            </tr>
        </table></td>
    </tr>
    <tr>
        <td class="td" colspan="2"><img src="../images/Nightriders_08.gif"></td>
    </tr>
    <tr>
        <td class="td" valign="top"><img src="../images/Nightriders_09.gif"><br>
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td class="td" valign="top" width="31"><img src="../images/Nightriders_11.gif"></td>
                <td class="td" valign="top" width="213">
                <% Set ConnObj = Server.CreateObject("ADODB.Connection") %>
                <% MyConnStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/nyheder.mdb") %>
                <% ConnObj.Open(MyConnStr) %>
       
                <% strSQL = "SELECT TOP 5 * FROM nyheder " %>
                <% strSQL = strSQL & " ORDER BY id DESC " %>
                <% Set rsnyhed = ConnObj.Execute(strSQL) %>
       
                <% If rsnyhed.BOF Or rsnyhed.EOF Then %>
                Ingen nyheder i øjeblikket!<br><br>
                Nightriders.dk beklager.
                <% Else %>
                <font size="3"><b>Seneste nyheder:</b></font>
                <% Do Until rsnyhed.BOF Or rsnyhed.EOF %>
                <br><br>
                <font size="1"><b><% = rsnyhed("dato") %></b></font><br>
                <a href="../nyheder/se-nyhed.asp?id=<%=rsnyhed("id")%>" title="Se mere"><% = LEFT(rsnyhed("nyhed"), 40) %>...</a><br>
                -----------------------------------
                <% rsnyhed.MoveNext %>
                <% Loop %>
                <br><br><center><a href="../nyheder/" title="Alle nyheder">Alle nyheder</a></center>
                <% End If %></td>
                <td class="td" style="background-image:url('../images/Nightriders_10.gif')" valign="top" width="30"></td>
            </tr>
        </table></td>
        <td class="td" valign="top" width="708"><center><font size="3"><b>Tjek login:</b></font></center></p>
        <% Set ConnObj = Server.CreateObject("ADODB.Connection") %>
        <% MyConnStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/medlemmer.mdb") %>
        <% ConnObj.Open(MyConnStr) %>

        <% Command = "SELECT brugernavn, adgangskode FROM brugere " %>
        <% Command = Command & "WHERE brugernavn = '" & Request.Form("brugernavn") & "' AND " %>
        <% Command = Command & "adgangskode = '" & Request.Form("adgangskode") & "';" %>
        <% Set rstLogin = ConnObj.Execute(Command) %>

        <% If rstLogin.BOF And rstLogin.EOF Then %>

        <% REM Invalid data %>
        <FONT COLOR="#FF0000"><B>FEJL!<BR>
        Enten dit brugernavn eller din adgangskode er forkert og login blev benægtet. Venligst gå tilbage og ret dette!!!</B></FONT>

        <% Else %>
        <% REM Create login session %>
        <% Session("Login") = TRUE %>
        <% Session("brugernavn") = Request.Form("brugernavn") %>

        <% If Request.QueryString("NewURL") = "" Then %>
        <% strURL = "../medlem/" %>
        <% Else %>
        <% strURL = Request.QueryString("NewURL") %>
        <% End If %>
        <% Response.Redirect(strURL) %>
        <% End if %>

        <% ConnObj.Close %></td>
    </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td align="right" class="td" height="107" style="background-image:url('../images/bund.gif');color:#C0C0C0;font-size:8pt;padding-top:55" valign="top" width="778">
        <b>::&nbsp;&nbsp;<a href="../sponsorer/" style="color:#C0C0C0;font-size:8pt" title="Sponsorer">SPONSORER</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../crew/" style="color:#C0C0C0;font-size:8pt" title="Crewet">CREWET</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../kontakt/" style="color:#C0C0C0;font-size:8pt" title="Kontakt">KONTAKT</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../links/" style="color:#C0C0C0;font-size:8pt" title="Links">LINKS</a>&nbsp;
        ::&nbsp;&nbsp;<a href="../afstemning/" style="color:#C0C0C0;font-size:8pt" title="Afstemning">AFSTEMNING</a>&nbsp;
        ::&nbsp;&nbsp;</b></td>
    </tr>
</table>

</body>
</html>
Avatar billede driis Nybegynder
17. september 2007 - 19:12 #5
<% Command = "SELECT brugernavn, adgangskode FROM brugere " %>
        <% Command = Command & "WHERE brugernavn = '" & Request.Form("brugernavn") & "' AND " %>
        <% Command = Command & "adgangskode = '" & Request.Form("adgangskode") & "';" %>
        <% Set rstLogin = ConnObj.Execute(Command) %>

Her ligger problemet. Du bygger din SQL streng op uden at validere. Blot replace ' med '
', f.eks. Derudover synes jeg det er bedst practice at selecte passwordet ud og sammenligne det i ASP. Dermed, skulle det lykkes nogen at lave et SQL injection alligevel, er det ASP koden, der foretager den egentlige sammenligning, og finder ud af om brugeren skal have adgang.
Avatar billede mrbart Nybegynder
17. september 2007 - 19:25 #6
Ok, altså hvor der står " ska jeg bare lade stå, men KUN ændre ' ud med ', ?? eller hvordan??

Jeg vil jo helst være helt sikkert...

Og er det KUN hvor der er tale om Brugerlogin eller er det i alle hvor der står Command? eller hvor dne snakker med Databasen??
Avatar billede keysersoze Ekspert
17. september 2007 - 19:59 #7
<% Command = "SELECT brugernavn, adgangskode FROM brugere " %>
<% Command = Command & "WHERE brugernavn = '" & Replace(Request.Form("brugernavn"),"'","''") & "' AND " %>
<% Command = Command & "adgangskode = '" & Replace(Request.Form("adgangskode"),"'","''") & "';" %>
<% Set rstLogin = ConnObj.Execute(Command) %>

Som skrevet i mit første indlæg skal du foretage dette replace-nummer hver eneste gang der bliver brugt brugerinput til databasen. Hvis du læser den artikel jeg linkede til står det rimelig godt forklaret synes jeg.
Avatar billede driis Nybegynder
17. september 2007 - 20:07 #8
keysersoze giver et fint eksempel. Som sagt skal det være alle steder der tales med databasen.

(Det er praktisk at lave en funktion til det, du blot kalder).
Avatar billede mrbart Nybegynder
17. september 2007 - 20:09 #9
Ohh.. Keysersoze.. Jeg skal altså bare kopiere det der direkte ind hvergang der bliver brugt brugerinput..:) Jeg tror jeg er ved at være med nu..:)

Men hvordan kan jeg give dig pointene nu??
Avatar billede mrbart Nybegynder
17. september 2007 - 20:10 #10
Ohh.. Keysersoze.. Jeg skal altså bare kopiere det der direkte ind hvergang der bliver brugt brugerinput..:) Jeg tror jeg er ved at være med nu..:)

Men hvem af jer skal nu have pointene?? :)
Avatar billede mrbart Nybegynder
17. september 2007 - 20:12 #11
Men det er vel kun når at den snakker med mit database med bruger-navnene ikk??

Ikk når der f.eks bliver skrevet til forside-nyheds databasen..

Er det ikk rigtig forstået??
Avatar billede keysersoze Ekspert
17. september 2007 - 22:09 #12
sql-injections er vel som sådan kun farlige når vi taler login og sikkerhed - men du vil stadig få et problem med tegnet ' når der skal insertes eller updates nyheder til siden så derfor skal du også dér replace.
Avatar billede ranglen Nybegynder
17. september 2007 - 22:16 #13
Jeg vil nu mene sql injektion er farligt, uanset i hvilken sammenhæng det er muligt. Afhængigt af databasen og dens opsætning, så kan man gøre stor skade, selv i en ellers uskyldig select sætning.
Avatar billede ranglen Nybegynder
17. september 2007 - 22:19 #14
I betaversionen af den nuværende eksperten, var der vist et hul i top 10-listen, hvor man kunne injekte sql, og f.eks. få trukket brugernavne og passwords (i md5) ud
Avatar billede driis Nybegynder
17. september 2007 - 22:32 #15
Du skal altid sikre dig mod injections, hvis du laver SQL sætninger udfra data modtaget fra klienten - som ranglen er inde på.
Avatar billede keysersoze Ekspert
17. september 2007 - 22:47 #16
det var jo sådan set også det jeg forsøgte at dække med at sige "sikkerhed" - i fx backend er SQL-injections forhåbentlige ikke et problem, men som også skrevet vil ' stadig kunne forvolde problemer.
Avatar billede arne_v Ekspert
18. september 2007 - 00:59 #17
parameters !
Avatar billede mrbart Nybegynder
18. september 2007 - 22:37 #18
Jeg vil gerne af med nogle point.. Jeg tror nemlig muligvis jeg har fundet ud af det..;)

-Bart
Avatar billede keysersoze Ekspert
19. september 2007 - 17:26 #19
svar :)
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