Starší komentáře ke článku: Elektronický obchod v ASP - zabezpečení administračního rozhraní

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Pavel Weiss

Datum vložení: 31.10.2002 12:39:15

Mam malou poznamku ( a trebas se seredne pletu ), ale prece login validace vypada trebas takhle :

sql = "select * from users where login = N<B>'</B>" & request("login") & "<B>'</B>"
... otevri recordset
... neco udelej

takze proc naky dropovani stredniku apod??? diky za vysvetleni

Avatar

Autor komentáře: Michal Kubeček

Datum vložení: 31.10.2002 16:00:41

Před tím středníkem může být i apostrof, který vám ukončí tu řetězcovou konstantu. Nejlepší řešení je ale stejně přes parametry, jen nevím, jestli to jde i v ASP. V PHP bych to napsal jako

ibase_query($conn, "select * from USERS where LOGIN=?", $_REQUEST["login"]);

a uživatel si může zadávat speciálních znaků, kolik uzná za vhodné. Je to výhodné zejména pokud potřebujete dostat do databáze řetězec přesně tak, jak ho uživatel zadal.

Avatar

Autor komentáře: Pavel Weiss

Datum vložení: 31.10.2002 16:49:58

Ad apostrof : samozrejme, jelikoz vime, ze SQL nema rado apostrofy a pak to dela ruzna zverstva, tak mu to vnutime jako 2 apostrofy za sebou, tak jak se to ostatne delat ma. Takze vami zmineny problem odpada.

Opravdu nechapu, co nam autor chtel timto clankem rict. Ze umi standardni situaci handlovat hodne nestandardne a zbytecne komplikovane, to ano :-)

Avatar

Autor komentáře: Marek Šiller

Datum vložení: 31.10.2002 20:49:16

Co se týče apostrofů, je možné zapsat i dva apostrofy (je to i správný SQL zápis), ale myslím si, že ani ukládaní HTML entity není špatně, v případě, že z daty v databázi budu pracovat pouze prostřednictvím webových stránek (a v HTML je lepší pro apostrof psát entitu).

A smysl článku? V diskusi pod článkem s popisem administračního rozhraní bylo mnoho komentářů k nezabezpečení vstupních dat proti vtipálkům, kteří experimentují s SQL příkazy, tak vznikl tento článek, kde filtruje speciální SQL znaky (podobnou funkci používám v několika fukčních elektronických obchodem a ještě jsem se nesetkal s úspěšným pokusem o zničení dat).

Avatar

Autor komentáře: Pavel Weiss

Datum vložení: 1.11.2002 8:38:05

Vypada to, ze mame na vec odlisny nazor. Pokud chci do databaze dostat apostrof, tak tam samozrejme ma byti apostrof a ne jeho HTML reprezentace, prece tu databazi nebudu navrhovat a pouzivat tak, aby mohla jet jen proti <a href='http://www' target='_blank'>http://www</a>. HTMLEncode je samozrejme potreba pro ZOBRAZENI tech dat. Kdyz tu databazi zacnete pouzivat jinak, tak budete do kazdeho jejiho aplikacniho klienta psat funkce HTML encode & decode? Asi ne... :-)

Avatar

Autor komentáře: Marek Šiller

Datum vložení: 4.11.2002 7:33:55

Já s Vámi souhlasím, ale vzhledem k tomu, že tuto databázi používám pouze pro tento elektronický obchod, který je přístupný pouze přes WWW (HTTP), tak v tom nevidím až takový problém. Já osobně nemám v SQL řetězcích apostrofy moc rád, protože jsou zdrojem bezpečnostních chyb, a proto tyto znaky radši zakóduju HTML entitamy tak, aby nenapáchaly víc škody než užitku, a poté je zase dekóduji (i když u HTML to není potřeba).

Avatar

Autor komentáře: Michal Kubeček

Datum vložení: 4.11.2002 8:50:21

Pokud to bude váš obchod, pak asi ano. Ale moje osobní zkušenost je, že pokud zákazník řekne, že něco určitě nikdy nebude potřebovat, je třeba to chápat tak, že si momentálně myslí že nebude a že nejbližších půl roku asi opravdu nebude.

Avatar

Autor komentáře: Nevim

Datum vložení: 3.7.2003 12:09:10

Tak tohle je výstup hledání na intervalu, čili zde, napřed poraďte těm blbcům, kteří dělali interval:

Hledaný výraz: '
Microsoft OLE DB Provider for SQL Server error '80040e14'

Unclosed quotation mark before the character string ') AND DATEDIFF(day,datum_vydani,GETDATE())>=0 order by datum_vydani Desc'.

/search.asp, line 244

Avatar

Autor komentáře: Anton

Datum vložení: 5.11.2002 9:23:39

proc mi to hodi chybu:

Microsoft VBScript - chyba pøi bìhu programu chyba 800a000d'
Neshoda typu: 'Session'
//global.asa, line 25

Na 25 radku je :
Session("arrKosik") = arrKosik

jinak je global asa stejnej jako v clanku

jak to opravit?

Jo, jeste mam na nekterejch strankach zakazenej session taqkhle:
<%@ EnableSessionState=False Language=VBScript %>

Avatar

Autor komentáře: Anton

Datum vložení: 5.11.2002 10:29:37

jeste jsem zjistil, ze toto dela pouze pri prvnim spusteni te ASP stranky (kde je EnableSessionState=False), kdyz se da refresh, tak uz se to spjusti, vi nekdo, jak to odstranit?

Ten global asa je popsan v clanku s kosikem... Tam mi nesla pridat comment.

Jo jeste mi nejni jasny, kdyz se kazdemu hnedle vytvari session kosik, co to udela, kdyz se pririti robot, co nepodporuje cookies, vytvori 1000 session... co to udela?

Avatar

Autor komentáře: Marek Šiller

Datum vložení: 7.11.2002 15:24:08

Chyba je způsobena právě příkazem EnableSessionState = false. Bez ukládání dat na úrovni Session vám tento nákupní košík fungovat nebude. Musel by se pak řešit jiným, daloko složitějším způsobem!

S robotama jsem zatím problém neměl, takže nemohu bezpečně říct, co se stane, ale chod aplikace ani serveru by to ohrozit nemělo.

Avatar

Autor komentáře: Anton

Datum vložení: 10.11.2002 15:28:53

EnableSessionState = false je ale na strankach nijak nesouvisejicich s nakupovanim! Problem je, ze pri pristupu na tuto stranku to hodi chybu.

Uchovavani kosiku v Session je vec diskutovana snad jiz od 1996, je to nejjednoduzsi reseni.

Presto ale, ten EnableSessionState = false na strankach nijak nesouvisejicich s nakupem by nemel vadit (na co zadelavat na session tam, kde to neni potreba?), kdyby se prepsal ten bugged global.asa, ne?

Avatar

Autor komentáře: Anton

Datum vložení: 5.11.2002 9:24:55

K Elektronický obchod v ASP – nákupní košík nejde pridat komentar, nejakej Bug intervallu?

Avatar

Autor komentáře: Ondřej Kopp

Datum vložení: 5.11.2002 9:33:19

Komentar pridat jde. Muzete mi prosim poslat podrobnosti co Vám neslo vlozit ?

Avatar

Autor komentáře: Anton

Datum vložení: 5.11.2002 10:31:27

hotovo - zapsat
Microsoft OLE DB Provider for SQL Server error '80040e10'

No value given for one or more required parameters.

/discussion-add.asp, line 445


nesel vlozit prispevek, kterej sem dal k tomudlenctomu clanku, protoze nesel pridat na <a href='http://www.interval.cz/discussion-add.asp?akce=preview&idclanek=1404' target='_blank'>http://www.interval.cz/discussion-add.asp?akce=preview&idclanek=1404</a>

Avatar

Autor komentáře: kriplozoik

Datum vložení: 31.12.2002 9:30:52

tady o tom uz nekdo psal v sekci 'Bezpecnost'.
btw... strTemp=replace(strTemp,"*","*") to je nejake divne, ne?
to spis strTemp=replace(strTemp,"*","#035;035#059;") kdyz uz (tady prave vidime, jak entity muzou zkomplikovat zivot :-))

reknete mi, prosim, nekdo, co jsou to 'english quotes'. slysel jsem, ze mohou usnadnit hackerovi zkurvit na pockani developerovu databazi podobnym nebo dokonce timto zpusobem

Avatar

Autor komentáře: kriplozoik

Datum vložení: 31.12.2002 9:34:16

to spis strTemp=replace(strTemp,"*","#035;") kdyz uz (tady prave vidime, jak entity muzou zkomplikovat zivot :-))

Avatar

Autor komentáře: iNDY

Datum vložení: 12.5.2003 10:14:52

BTW. nebylo by IMHO lepší použít uloženou proceduru s parametry a pak by nebylo nutné ošetřovat vstupy kvůli skládání SQL ...

Avatar

Autor komentáře: Michal Schmidt

Datum vložení: 4.7.2003 16:00:47

jj taky se divim navic i kod je pak cistsi kdyz mate nejake slozitejsi storky s spoustou joinu na jine tabulky atd.. beru to z pohledu ms sql 2000...

Avatar

Autor komentáře: Kaiser

Datum vložení: 27.6.2003 15:38:59

Zas jeden nedokončenej seriál. Bude někdy pokračování?

... Příště vytvoříme a integrujeme do stávajícího e-shopu databázi uživatelů, aby nemuseli při každém nákupu zadávat osobní data...

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 27.6.2003 19:09:32

Zeptejte se autora ;-)

Zpět na článek | Úvodní stránka Interval.cz