Autor Zpráva
fallout
Profil *
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
Ako máš identifikovaného prihláseného človeka?
BetaCam
Profil
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 *
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
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
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 *
tiso
BetaCam

děkuju moc, už to běží a jsem klidnější:-)
fallout
Profil *
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
echo '<input type="chceckbox" name="n'.$i.'" value="00004">';
fallout
Profil *
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
Na tohle se hodi pole a na estestiku se prosimte vykasli, ucelnost je myslim zrejma ...
fallout
Profil *
Kcko

ale i tak, je lepší si vybrat ze dvou možností, které jsem vidět než vědět jen jeden:-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: