Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

udskiftning af "filter række"

5 views
Skip to first unread message

Is

unread,
Sep 21, 2013, 1:06:58 PM9/21/13
to
Hej

jeg forsøger at lave noget, så der fra et privat login kan sendes en
besked til en gruppe personer som er i en database
Jeg anvender .asp filer og J-mail

i databasen er der forskellige rækker, hvor man kan sætte et"1" tal ud
for hver person, og en person kan så være med i flere grupper.

jeg har fået det til at virke med fast filter.Jeg filtret her i denne linje:
personliste.Open "SELECT * FROM tblSend Where Bestyrelse = 1 " ,
strConnect

jeg ønsker noget i retning af

dim strFilter
strFilter = Request.QueryString("sendtil")

hvordan skal denne linje så se ud ???
det er nogle tegn omkring strFilter jeg ikke kan få rigtige.

personliste.Open "SELECT * FROM tblSend Where strFilter = 1 " , strConnect


mvh Erik

Jørn Andersen

unread,
Sep 21, 2013, 5:59:25 PM9/21/13
to
On Sat, 21 Sep 2013 19:06:58 +0200, Is <eriki...@mail.dk> wrote:

Hej Erik,

>jeg forsøger at lave noget, så der fra et privat login kan sendes en
>besked til en gruppe personer som er i en database
>Jeg anvender .asp filer og J-mail
>
>i databasen er der forskellige rækker, hvor man kan sætte et"1" tal ud
>for hver person, og en person kan så være med i flere grupper.
>
>jeg har fået det til at virke med fast filter.Jeg filtret her i denne linje:
>personliste.Open "SELECT * FROM tblSend Where Bestyrelse = 1 " ,
>strConnect
>
>jeg ønsker noget i retning af
>
>dim strFilter
>strFilter = Request.QueryString("sendtil")

Indeholder strFilter fx "Bestyrelse" - ??

>hvordan skal denne linje så se ud ???
>det er nogle tegn omkring strFilter jeg ikke kan få rigtige.
>
>personliste.Open "SELECT * FROM tblSend Where strFilter = 1 " , strConnect

Hvis ja til ovenstående:
strSql = "SELECT * FROM tblSend WHERE " & strFilter & " = 1"

- Hvis jeg har forstået dit spørgsmål rigtigt ...

Good luck,
Jørn

--
Jørn Andersen
http://socialister.dk
http://marxisme.dk

Leif Neland

unread,
Sep 21, 2013, 6:07:18 PM9/21/13
to
Is kom med følgende:
> Hej
>
> jeg forsøger at lave noget, så der fra et privat login kan sendes en besked
> til en gruppe personer som er i en database
> Jeg anvender .asp filer og J-mail
>
> i databasen er der forskellige rækker, hvor man kan sætte et"1" tal ud for
> hver person, og en person kan så være med i flere grupper.
>
Databasen burde have en tabel, hvor der var en record med person_id og
gruppe_id for hver gruppe personen var med i, men lad os antage at du
ikke kan/vil lave det "korrekt".

> jeg har fået det til at virke med fast filter.Jeg filtret her i denne linje:
> personliste.Open "SELECT * FROM tblSend Where Bestyrelse = 1 " , strConnect
>
> jeg ønsker noget i retning af
>
> dim strFilter
> strFilter = Request.QueryString("sendtil")
>
> hvordan skal denne linje så se ud ???
> det er nogle tegn omkring strFilter jeg ikke kan få rigtige.
>
> personliste.Open "SELECT * FROM tblSend Where strFilter = 1 " , strConnect
>
>
Du kan sikket finde en tutorial, der siger at du kan lave

personliste.Open "SELECT * FROM tblSend Where " & strFilter & " = 1 "
, strConnect

Men det er hamrende usikkert, og indbyder til indbrud i din database.

Det, du risikerer er dette: http://xkcd.com/327/

Normalt er løsningen at bruge "parameterized queries", f.ex.
"Select * from tab where felt=?" og så give data som en parameter.
Men det kan man ikke, når det er et feltnavn, der er variablen.

Der kunne laves noget kompliceret sql med case-sætninger, men det kan
ofte blive lidt langhåret.

Noget á la
..where case ? when 'Bestyrelse' then bestyrelse
when 'Fodbold' then fodbold
else 0 end = 1" og så strFilter som parameter.

Men det letteste er nok dette:
Du skal sikre dig at der kun kommer de værdier, du tillader.

Det kan f.ex. klares med en case-sætning i asp

Select case strConnect
case 'Bestyrelse'
case 'Fodbold'
case 'Håndbold'
case else
response.write 'Illegal værdi'
response.end
end case

De første case's udføres, men gør ikke noget, når værdien er kendt.
Er det ikke en godkendt værdi, stopper programmet. (Du kan også sætte
en variabel, f.ex. hack_attempt=1 og så reagere passende på det senere)

Nu, du er sikker på at strConnect indeholder noget gyldigt, kan du
tillade dig at lave
personliste.Open "SELECT * FROM tblSend Where " & strFilter & " = 1 "
, strConnect

Leif

--
Husk kørelys bagpå, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Leif Neland

unread,
Sep 21, 2013, 6:09:19 PM9/21/13
to
Jørn Andersen skrev:

> Hvis ja til ovenstående:
> strSql = "SELECT * FROM tblSend WHERE " & strFilter & " = 1"
>
> - Hvis jeg har forstået dit spørgsmål rigtigt ...
>
> Good luck,

... med at rydde op efter indbrud i databasen. :-)

http://xkcd.com/327/

Se mit andet indlæg om at sikre validt input.

Is

unread,
Sep 22, 2013, 3:13:17 AM9/22/13
to
Den 22-09-2013 00:07, Leif Neland skrev:
> Is kom med følgende:
>> Hej
>>
>> jeg forsøger at lave noget, så der fra et privat login kan sendes en
>> besked til en gruppe personer som er i en database
>> Jeg anvender .asp filer og J-mail
>>
>> i databasen er der forskellige rækker, hvor man kan sætte et"1" tal ud
>> for hver person, og en person kan så være med i flere grupper.
>>
> Databasen burde have en tabel, hvor der var en record med person_id og
> gruppe_id for hver gruppe personen var med i, men lad os antage at du
> ikke kan/vil lave det "korrekt".

tak for svar

det tror jeg ikke er så nemt, fordi det er en medlemsliste i excel, hvor
jeg har er del ark til forskellige udskrifter og visninger m.m.
men næsten alt stammer fra et "master" ark. i dette har jeg lavet nogle
kolonner, hvor jeg sætter et "1" tal hvis personen tilhøre gruppen
svarende til kolonnen
så data er importeret fra excel.

men jeg har overvejet i databasen at lave nogle forespørgsler i stedet
for, og så hente data der fra. ville det være bedre ??

(resten af dit svar roder jeg lidt med i aften)
mvh Erik

Is

unread,
Sep 22, 2013, 3:31:55 PM9/22/13
to
Den 22-09-2013 00:07, Leif Neland skrev:


Tak for svar
jeg har fået det til at virke.

jeg lavede nogle qry i databasen, og sortere på den måde
navnet på den rette qry bygges så ind i linket til side
.asp?filter=qryA

og om sikkerhed,
så kaldes mail siden fra en side hvor der kræves log in, som jeg for år
tilbag har fået hjælp med. ved login oprettes nogle session, som tjekkes
på mail siden

tak for input

mvh Erik

Jørn Andersen

unread,
Sep 22, 2013, 6:04:23 PM9/22/13
to
On Sun, 22 Sep 2013 00:09:19 +0200, Leif Neland <le...@neland.dk>
wrote:

>Jørn Andersen skrev:
>
>> Hvis ja til ovenstående:
>> strSql = "SELECT * FROM tblSend WHERE " & strFilter & " = 1"
>>
>> - Hvis jeg har forstået dit spørgsmål rigtigt ...
>>
>> Good luck,
>
>... med at rydde op efter indbrud i databasen. :-)
>
>http://xkcd.com/327/
>
>Se mit andet indlæg om at sikre validt input.

Det er jeg selvfølgelig helt enig i. Men det behøver man vel ikke
skrive, hver gang man svarer på et spørgsmål ...

Og ja, parameter-forespørgsler er en glimrende måde at sikre sig mod
mange ting, men det er ikke den eneste.

Mvh. Jørn

Leif Neland

unread,
Sep 23, 2013, 1:21:34 AM9/23/13
to
Jørn Andersen kom med denne ide:
> On Sun, 22 Sep 2013 00:09:19 +0200, Leif Neland <le...@neland.dk>
> wrote:
>
>> Jørn Andersen skrev:
>>
>>> Hvis ja til ovenstående:
>>> strSql = "SELECT * FROM tblSend WHERE " & strFilter & " = 1"
>>>
>>> - Hvis jeg har forstået dit spørgsmål rigtigt ...
>>>
>>> Good luck,
>>
>> ... med at rydde op efter indbrud i databasen. :-)
>>
>> http://xkcd.com/327/
>>
>> Se mit andet indlæg om at sikre validt input.
>
> Det er jeg selvfølgelig helt enig i. Men det behøver man vel ikke
> skrive, hver gang man svarer på et spørgsmål ...
>
Det ved jeg snart ikke.
Nogle ser det svar, eller lignende i tutorials, der enten helt springer
over problematikken, eller nævner det i en fodnote, der bliver overset.
Før man ved af det, bliver det brugt i et offentligt tilgængeligt
websted, og ... velkommen på forsiden af EB :-)

> Og ja, parameter-forespørgsler er en glimrende måde at sikre sig mod
> mange ting, men det er ikke den eneste.
>
Ja, de kan jo ikke bruges i dette tilfælde. Uden store krumspring.

Leif Neland

unread,
Sep 23, 2013, 1:27:08 AM9/23/13
to
Is udtrykte præcist:
> Den 22-09-2013 00:07, Leif Neland skrev:
>
>
> Tak for svar
> jeg har fået det til at virke.
>
> jeg lavede nogle qry i databasen, og sortere på den måde
> navnet på den rette qry bygges så ind i linket til side
> .asp?filter=qryA
>
Ja, så kan man ikke smugle andre queries igennem end de, du selv har
lavet og godkendt. Fint.

> og om sikkerhed,
> så kaldes mail siden fra en side hvor der kræves log in, som jeg for år
> tilbag har fået hjælp med. ved login oprettes nogle session, som tjekkes på
> mail siden
>
Ok. Men man kan lige så godt gøre det hver gang; dels bør det bare være
en vane at gøre det rigtigt, dels kunne det være at nogen brød igennem
password-sikkerheden, og så er det godt med endnu et lag sikkerhed.
Eller at siden blev gjort offentlig, og så slipper man for at skulle
lave det hele om, fordi det ikke var gjort rigtigt fra starten af.

Jeg hader bare tutorials, der viser den usikre metode uden at nævne
farer eller løsninger på farerne.
0 new messages