Ik ben voor iemand bezig om een programma te debuggen. De oorspronkelijke maker is niet meer beschikbaar en ik spring nu even voor de gebruiker in. Een gedeelte hiervan is een website, waarop ingelogt kan worden met een tekenreeks en een inlogcode. Mijn eigen ervaring met ASP is niet heel groot, maar dit is het enige dat in ASP moet gebeuren en ik hoopte het zo even op te lossen. Nu ben ik de hele middag eigenlijk al met dit probleem aan het prutsen
Het feit dat er geen commentaar of documentatie bij is gemaakt helpt hierbij niet echt.
Misschien kom ik er met een of twee aanwijzingen van jullie wel uit.
Het gaat om een systeem geprogrammeert in Frontpage, draaiende op IIS, met database koppelingen naar een interbase database. De hoeveelheid betrokken code is best groot. Ik heb al wat zitten filteren, maar deze post wordt nog steeds huge. Mijn excuses daarvoor.
Het Optic_no is normaal 3 hoofdletters en de logincode is 6 cijfers.
De form waarin de login wordt gevraagd: (
Dit wordt vervolgens doorgestuurd naar OptChck.asp. deze bestaat eigenlijk uit 3 stukken:
De oplettende lezer heeft hier vast de vreemde functie 'Optiekvinden' tussen gevonden. Dit heeft betrekking op een (interbase isql) database, met daarin een procedure met deze naam. De bijbehorende code:
Vervolgens komt er in OptChck.asp zoals het eruitziet (custom query) nog een keer precies dezelfde query:
In dit kleine stukje hieronder staat 3x 'gelukt', zoals ook in de db query stond. Voor mijn gevoel is die laatste wel significant, maar ik ben er niet helemaal achter waar de % naar verwijst in dit geval.
Mijn probleem is: op dit moment kun je met elke combinatie van letters en cijfers inloggen, (zolang ze voldoen aan de constraints die gesteldzijn aan het invoerveld). De persoon die voor mij aan dit programma werkte, heeft ooit eens een aanpassing gemaakt, waardoor de inlogmogelijkheid werd zoals hierboven geschreven. Daarvoor heeft het (mogelijk foutief) gewerkt. Zie jij zo, of kan je mij leiden naar de plaats waar ik een aanpassing zou moeten maken om het inloggen te laten werken?
Mijn huidige theorie op dit moment is dat de database functie een tijdelijke webpagina aanmaakt (soort van cookie, maar dan serverside). Zodra iemand een van de volgende pagina's wil bekijken wordt dat stukje html bekeken.
Als je een stuk code van een volgend stuk nodig hebt, hoor ik het ook graag.
Misschien kom ik er met een of twee aanwijzingen van jullie wel uit.
Het gaat om een systeem geprogrammeert in Frontpage, draaiende op IIS, met database koppelingen naar een interbase database. De hoeveelheid betrokken code is best groot. Ik heb al wat zitten filteren, maar deze post wordt nog steeds huge. Mijn excuses daarvoor.
Het Optic_no is normaal 3 hoofdletters en de logincode is 6 cijfers.
De form waarin de login wordt gevraagd: (
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <form method="POST" action="OptChck.asp" name="FrontPage_Form1"> <input type="text" name="Optic_no" size="20"> <!--webbot bot="Validation" S-Data-Type="String" B-Allow-Letters="TRUE" B-Allow-Digits="TRUE" B-Value-Required="TRUE" I-Minimum-Length="6" I-Maximum-Length="6" --> <input type="password" name="logincode" size="20" maxlength="6"></td> <input type="submit" value="Inloggen" name="B1"></p> <input type="hidden" name="NU" value="<%=date%>"> <input type="hidden" name="KLTNO" value="%"> <input type="hidden" name="NAAM" value="%"> <input type="hidden" name="dag" value="%"> <input type="hidden" name="Mnd" value="-"> <input type="hidden" name="jaar" value="%"> </form> |
Dit wordt vervolgens doorgestuurd naar OptChck.asp. deze bestaat eigenlijk uit 3 stukken:
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <!--webbot bot="DatabaseRegionStart" startspan s-columnnames="GELUKT" s-columntypes="200" s-dataconnection="Database2" b-tableformat="FALSE" b-menuformat="FALSE" s-menuchoice="GELUKT" s-menuvalue="GELUKT" b-tableborder="TRUE" b-tableexpand="TRUE" b-tableheader="TRUE" b-listlabels="TRUE" b-listseparator="TRUE" i-ListFormat="0" b-makeform="FALSE" s-recordsource s-displaycolumns="GELUKT" s-criteria s-order s-sql="Select * from Optiekvinden( '::Optic_no::' , '::Logincode::' , '::NU::')" b-procedure="FALSE" clientside SuggestedExt="asp" s-DefaultFields="Optic_no=&Logincode=&NU=" s-NoRecordsFound="Geen records geretourneerd." i-MaxRecords="256" i-GroupSize="0" BOTID="0" u-dblib="../_fpclass/fpdblib.inc" u-dbrgn1="../_fpclass/fpdbrgn1.inc" u-dbrgn2="../_fpclass/fpdbrgn2.inc" tag="BODY" </table>" b-WasTableFormat="FALSE" --><!--#include file="../_fpclass/fpdblib.inc"--> |
De oplettende lezer heeft hier vast de vreemde functie 'Optiekvinden' tussen gevonden. Dit heeft betrekking op een (interbase isql) database, met daarin een procedure met deze naam. De bijbehorende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| SHOW PROCEDURE optiekvinden
Procedure text:
=============================================================================
Declare Variable X Float ;
Begin
Select Count(*) from Optiek where Upper(Optic_no) = Upper(:Optic_no) and
LoginCode = :Optic_Code into :X;
If ( :X <> 0 ) Then
Begin
Gelukt = '<html><head><meta http-equiv="Refresh" content="2; URL=Agenda.Asp?Optiek='||
Upper(:Optic_No) ||
'&Code=<<&Datums=01-01-2000&NU=' || :NU || '">';
Gelukt = Gelukt || ' <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> ';
Gelukt = Gelukt || ' <meta name="ProgId" content="FrontPage.Editor.Document"> ';
Gelukt = Gelukt || ' <title>Nieuwe pagina 1</title></head> ' ;
Gelukt = Gelukt || '<body></body></html>';
End
Else
Begin
Gelukt = '';
End
suspend;
end
=============================================================================
Parameters:
OPTIC_NO INPUT VARCHAR(6)
OPTIC_CODE INPUT VARCHAR(6)
NU INPUT VARCHAR(10)
GELUKT OUTPUT VARCHAR(1000) |
Vervolgens komt er in OptChck.asp zoals het eruitziet (custom query) nog een keer precies dezelfde query:
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <% fp_sQry="Select * from Optiekvinden( '::Optic_no::' , '::Logincode::' , '::NU::')" fp_sDefault="Optic_no=&Logincode=&NU=" fp_sNoRecords="Geen records geretourneerd." fp_sDataConn="Database2" fp_iMaxRecords=256 fp_iCommandType=1 fp_iPageSize=0 fp_fTableFormat=False fp_fMenuFormat=False fp_sMenuChoice="GELUKT" fp_sMenuValue="GELUKT" fp_iDisplayCols=1 fp_fCustomQuery=True BOTID=0 fp_iRegion=BOTID %> |
In dit kleine stukje hieronder staat 3x 'gelukt', zoals ook in de db query stond. Voor mijn gevoel is die laatste wel significant, maar ik ben er niet helemaal achter waar de % naar verwijst in dit geval.
code:
1
2
3
4
5
6
| <!--#include file="../_fpclass/fpdbrgn1.inc"--> <!--webbot bot="DatabaseRegionStart" i-CheckSum="45706" endspan --> <p> <!--webbot bot="DatabaseResultColumn" startspan s-columnnames="GELUKT" s-column="GELUKT" b-tableformat="FALSE" b-hasHTML="TRUE" clientside --> <%=FP_Field(fp_rs,"GELUKT")%> <!--webbot bot="DatabaseResultColumn" i-CheckSum="5654" endspan --> |
Mijn probleem is: op dit moment kun je met elke combinatie van letters en cijfers inloggen, (zolang ze voldoen aan de constraints die gesteldzijn aan het invoerveld). De persoon die voor mij aan dit programma werkte, heeft ooit eens een aanpassing gemaakt, waardoor de inlogmogelijkheid werd zoals hierboven geschreven. Daarvoor heeft het (mogelijk foutief) gewerkt. Zie jij zo, of kan je mij leiden naar de plaats waar ik een aanpassing zou moeten maken om het inloggen te laten werken?
Mijn huidige theorie op dit moment is dat de database functie een tijdelijke webpagina aanmaakt (soort van cookie, maar dan serverside). Zodra iemand een van de volgende pagina's wil bekijken wordt dat stukje html bekeken.
Als je een stuk code van een volgend stuk nodig hebt, hoor ik het ook graag.
Localhost is where the heart is