Autor | Zpráva | ||
---|---|---|---|
fallout Profil * |
#1 · Zasláno: 12. 12. 2007, 17:59:07
Dobrý "zimní" podvečer,
chtěl bych zabránit SQL injection. Nejdříve popušu co dělám : Vytváří interní zprávy, kdy se vypíše seznam zpráv, který vám někdo "poslal". Pak když člověk klikne na předmět zprávy, ukáže se celá zpráva. URL se změní na www.stranka.cz/showmsg.php?ID=15454545 takže to ID vemu pomocí $_GET. Napadlo mě načíst všechny ID zpráv, ktaré patří příjemci a pak pomocí in_array kontrolovat jestli je ID v pořádku a pak až udělat dostat kdy "SELECT ... WHERE messageID = '"$_GET['ID']"';...ale později bude pole dost velké, nevím jestli je to dobré řešení. Takže otázky zní: Je tzo dobré řešení? Jak by se to dalo jinak řešit, aby se zabránilo SQL injection. Děkuju předem. |
||
tiso Profil |
#2 · Zasláno: 12. 12. 2007, 18:23:12
Ako máš identifikovaného prihláseného človeka?
|
||
BetaCam Profil |
#3 · Zasláno: 12. 12. 2007, 18:32:53
Pravidlo 1. Slashovat, slashovat a slashovat.
Pravidlo 2. Kontrolovat jestli je ID opravdu INT jak to uděláš je tvoje věc jestli is_int($_GET['ID']) nebo to třeba přetypuješ (int)$_GET['ID'] Pravidlo 3. Kontrolovat jestli zpráva s tím ID patří opravdu uživateli, který jí chce zobrazit Pokud se jedná o SQL injection mělo by ti stačit když budeš důsledně dodržovat Pravidlo 1. |
||
fallout Profil * |
#4 · Zasláno: 12. 12. 2007, 19:22:36
tiso
je to potřeba? BetaCam Pokud se jedná o SQL injection mělo by ti stačit když budeš důsledně dodržovat Pravidlo 1. nejen to, neznám všechny typy útoků, takže bych byl rád kdyby to bylo blbovzdorné:-) Pravidlo 3. Kontrolovat jestli zpráva s tím ID patří opravdu uživateli, který jí chce zobrazit jsme špatně napsat ten select, samozřejmě pak kontroluju je podmínka delší ... WHERE messageID = '".$_GET['ID']."' AND prijemce = '".$_SESSION['login']."'"; jinak děkuju, už to předělávám...jinak ze zajímavosti...co to moje řešení s polem? |
||
tiso Profil |
#5 · Zasláno: 12. 12. 2007, 19:32:06 · Upravil/a: tiso
fallout - je, preto sa na to pýtam. Veď ho musíš mať identifikovaného, ako by si inak zobrazil zoznam správ určených len jemu? Pýtam sa na spôsob ($_SESSION ? $_COOKIE?), rovnako musíš ošetriť i to zobrazovanie správ.
Pozerám že som si mal prečítať aj odpoveď pre BetaCam-a. To riešenie s poľom je zbytočné, stačí že Ti funguje WHERE časť dotazu. |
||
BetaCam Profil |
#6 · Zasláno: 12. 12. 2007, 19:32:56
jinak ze zajímavosti...co to moje řešení s polem?
No dalo by se to zdřejmě taky využít, ale mám takovej pocit, že by to byla postupem času dost velká režie jen kvůli takovéhle prkotině. |
||
fallout Profil * |
#7 · Zasláno: 12. 12. 2007, 21:20:00
tiso
BetaCam děkuju moc, už to běží a jsem klidnější:-) |
||
fallout Profil * |
#8 · Zasláno: 12. 12. 2007, 21:34:31
Teď mě napadá, doufám, že nebude vadit když se ještě zeptám:
Chtěl bych udělat mazání. Checkboxy, klasika. Momentálně vypadá checkbox takhle: <INPUT TYPE="checkbox" name="zpravy" value="00004"> přičemž 00004 je číslo zprávy. Viděl jsem, že "name" checkboxu bylo pole, v mém případě by to tedy bylo name="zpravy[]" což se mi z estetických důvodů nelíbí. Viděl jsem někde, že name checkboxu bylo name="n1" přičemž číselně to šlo vzestupně a tady si nejsem jistý jak je to řešeno, tak jestli by někdo věděl jak na to. Nebo má jiný nápad:-) |
||
tiso Profil |
#9 · Zasláno: 12. 12. 2007, 21:53:25
echo '<input type="chceckbox" name="n'.$i.'" value="00004">';
|
||
fallout Profil * |
#10 · Zasláno: 12. 12. 2007, 22:16:54
tiso
to mě napadlo, ale jde mi spíš o multiple deleting a nevím jak rozeznat, co je zaškrtnutý když je jméno každý jiný:-) |
||
Kcko Profil |
#11 · Zasláno: 12. 12. 2007, 22:35:13
Na tohle se hodi pole a na estestiku se prosimte vykasli, ucelnost je myslim zrejma ...
|
||
fallout Profil * |
#12 · Zasláno: 12. 12. 2007, 22:41:45
Kcko
ale i tak, je lepší si vybrat ze dvou možností, které jsem vidět než vědět jen jeden:-) |
||
Časová prodleva: 16 let
|
0