Míchání proměnných na serveru? – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Míchání proměnných na serveru? – PHP – Fórum – Programujte.comMíchání proměnných na serveru? – PHP – Fórum – Programujte.com

 

ACM
~ Anonymní uživatel
5 příspěvků
2. 12. 2007   #1
-
0
-

Dobrý den, mám takový zdlouhavý, dotaz - snad mě pochopíte:

Mám v PHP aplikaci pro více uživatelů a pro přihlašování používám cookies. Do každé stránky mám naincludovaný soubor, kde se testují hodnoty v cookie a následně (pokud jsou hodnoty správné) se vyberou hodnoty z databáze dle cookie (například do proměnné $cislo=číslo uživatele). Dále se pak v mnoha dalších různých souborech hodnoty v databázi mění. Občas se ale stane, že určitá hodnota se přiřadí někomu úplně jinému, než by měla.

A tak se ptám, je možné, že by se na serveru nějak míchaly proměnné? Přiklad: On-line jsou třeba 2 lidé a najednou zvolí určitou akci. V souboru je příkaz MySQL_Query("UPDATE tabulka SET sloupec='$neco' WHERE cislo='$cislo' "); Server si poplete hodnoty (přidá do sloupce sloupec hodnotu z proměnné $neco jinému uživateli, než který ji zvolil)? Je toto možné? Pokud ano, nevíte prosím někdo, jak tomu zamezit? Pokud ne, nevíte prosím někdo, čím by to mohlo být způsobené? Děkuji všem za rady.

Nahlásit jako SPAM
IP: 62.240.186.–
olgo0
Věrný člen
2. 12. 2007   #2
-
0
-

to ze by sa premanne samovolne prehadzovali je blbost. skus sem hodit uplnejsiu cast kodu pripadne popisat povod tych hodnot lebo odkial je $nieco a $cislo fakt netusim.

Nahlásit jako SPAM
IP: 193.110.186.–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
ACM
~ Anonymní uživatel
5 příspěvků
2. 12. 2007   #3
-
0
-

Toto je soubor naincludovaný do každé stránky

<?php	


$login = $_COOKIE['login'];

$cara = strpos($login,'&');
$prihlasovaci_jmeno2 = substr($login,0,$cara);
$prihlasovaci_heslo2 = substr($login,$cara+1);


$kontrola_proti_heku = MySQL_Query("SELECT * FROM hraci WHERE jmeno='$prihlasovaci_jmeno2' AND heslo='$prihlasovaci_heslo2' ");
$kontrola_proti_heku2 = MySQL_Num_Rows($kontrola_proti_heku);

if ($kontrola_proti_heku2 == 0) header("Location: vodjed.php");


$ty = MySQL_Query("SELECT * FROM hraci WHERE jmeno = '$prihlasovaci_jmeno2' ");
$tvuj_narod = MySQL_Result($ty,0,'narod');
$jmeno_hrace = MySQL_Result($ty,0,'jmeno_hrace');
$cislo_hrace = MySQL_Result($ty,0,'cislo');


$tvoje_zlato = MySQL_Result($ty,0,'zlato');
$tvoje_jidlo = MySQL_Result($ty,0,'jidlo');
$tvoje_kola = MySQL_Result($ty,0,'kola');



?>


A v jiném souboru je pak třeba:
MySQL_Query("UPDATE produkce SET kolik='$produkce_kolik' WHERE typ='t' AND kdo='$cislo_hrace' ");

Nahlásit jako SPAM
IP: 62.240.186.–
olgo0
Věrný člen
2. 12. 2007   #4
-
0
-

trochu zosiroka: cookies niesu tak bezpecne ako si asi myslis takmer hocikto ti tam moze hocico podstrcit a tvoj skript (aj keby fungoval) dopadne na hubu. google: cookies, sql injection, ...



if ($kontrola_proti_heku2 == 0) header("Location: vodjed.php");

ked som to pochopil tak to ma byt prave jedna (pri uspesnom logine) takze radsej if($kontrola_proti_heku2 != 1) ...

dalej vyberas * a potom to vykusujes pomocov mysql_result. je lepsie vymenovat stlpce.

k dotazu: skus napisat co robis, co je v tych tabulkach. lebo kod je dost chaoticky

Nahlásit jako SPAM
IP: 193.110.186.–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
ACM
~ Anonymní uživatel
5 příspěvků
2. 12. 2007   #5
-
0
-

Hmm, s těmi SQL injekcemi jsem tady na to zorvna zapomněl, díky za tip. Jinak nevím jak bych to poslal, myslel jsem si, že $cislo_hrace blbne právě tady. Důsledky toho se ale mohou projevit asi tak v 30 dalších souborech, a to sem kopírovat nebudu. Myslel jsem, že by se to dalo vyřešit nějak obecně, ale asi ne. Nemáš tedy prosím nějaký obecný nápad? Díky

Nahlásit jako SPAM
IP: 62.240.186.–
olgo0
Věrný člen
3. 12. 2007   #6
-
0
-

tazko radit ked vobec netusim o co sa snazis. skus to nejak zrozumitelne popisat pripadne strukturu tych tabuliek.

Nahlásit jako SPAM
IP: 193.110.186.–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
ACM
~ Anonymní uživatel
5 příspěvků
4. 12. 2007   #7
-
0
-

Jak říkám, bylo by to děsně na dlouho. Jinak nemohlo by toto být způsobeno tím, že jsem tam ten soubor, který jsem sem kopíroval měl v každé stránce naincludovaný 3x?

Nahlásit jako SPAM
IP: 62.240.186.–
Nefaritus
~ Redaktor
+2
Posthunter
5. 12. 2007   #8
-
0
-

To ACM : No je to možný, každopádně bych cookies naradil session ;o)

Nahlásit jako SPAM
IP: 213.191.111.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
6. 12. 2007   #9
-
0
-

To Nefaritus : Sessions jsem tam měl před tím a pak jsem tam dal cookies, myslel jsem, že se to tím vyřeší, ale ne :smile1:

Nahlásit jako SPAM
IP: 62.240.186.–
Nefaritus
~ Redaktor
+2
Posthunter
7. 12. 2007   #10
-
0
-

To Anonymní uživatel : Pak už mě nenapadá řešení :(

Nahlásit jako SPAM
IP: 213.191.111.–
neimenuje0
Návštěvník
7. 12. 2007   #11
-
0
-

Musím podotknout, že tvůj systém je velice nebezpečný. Třeba tato část kódu:

if ($kontrola_proti_heku2 == 0) header("Location: vodjed.php");

(Mimochodem, kontrolovat by se mělo na jedničku)

Tohle ti sice přesměruje neoprávněného uživatele někam do prkvančic, ale to je jen informace v hlavičce, které rozumí prohlížeč, že se má někam přesměrovat, ale nezamezí tov dalším vykonávání scriptu!! Správně musíš volat hned po location fci exit();
Další věc: Ukládat Login i s heslem do Cookie je děsně nezodpovědný, neuvědomuješ si riziko jaké by nastalo např. při zneužití XSS, nebo třeba jenom nesmázlé cookie někde ve veřejné kavárně?
Co se týče SQL injejction, tak pokud máš na serveru puštěný magic_quotes_gpc (nedoporučuji mít spuštěné, ale na většině hostingů je to výchozí volba), tak se prakticky nemusíš o nic starat. Pokud ne, tak musíš řetězce prohnat fcí mysql_real_escape_string($string), to doporučuji ikdyž je magie zapnutá, potom by to vypadalo: mysql_real_escape_string(stripslashes($string)).

Nahlásit jako SPAM
IP: 195.47.18.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
7. 12. 2007   #12
-
0
-

To neimenuje : No, díky za rady

Nahlásit jako SPAM
IP: 62.240.186.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Míchání barev — založil Spectator

Míchání barev v CorelDraw 12 — založil Tomáš Erst

Míchání barev ve Photoshopu CS6 — založil Tomáš Erst

Výpis proměnných — založil Akk

Záměna proměnných — založil Anonymní uživatel

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý