RulleRimfrost Skrevet 2. januar 2007 Del Skrevet 2. januar 2007 Jeg kan ikke mye php, men forsøker lære litt. Om man har en login som setter en session-variabel vha php, for så å kjøre en spørring mot mysql basert på denne variabelen (identitet), så er vel ikke det nok sikkerhet for at bare den identen har tilgang til dataene fra spørringen.. Jeg tenker på f eks "mine faktura/ordre" hos diverse firma. Om jeg prøver å endre GET-strengen til en annen kundes fakturanummer, så får jeg ikke tilgang til denne posten i ordre-tabellen (selvfølgelig). Hvilken sjekk er det som hindrer dette ? Pseudokode jeg tenker meg - Login via ssl - session_start(); - $_SESSION['client_id']=$_GET['name']; - SELECT * FROM Ordredata WHERE User=$_SESSION['client_id']; Er jeg kanskje helt bak mål for hvordan de løser dette ? Lenke til kommentar
ZoRaC Skrevet 2. januar 2007 Del Skrevet 2. januar 2007 Er litt på tynn is her, men om noen snapper opp din PHPSESSID så kan de bruke den til å utgi seg for å være "deg". Men, dette er vel ikke noe problem når det går via SSL da... Enkelte legger inn sjekk på at IP er den samme hver gang siden lastes: if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']) logout(); Men, enkelte (særlig AOL) skifter IP for hver refresh, så da vil det jo feile... Og man kan også sjekke om man bruker samme nettleser ($_SERVER['USER_AGENT'] tror jeg) Lenke til kommentar
Ståle Skrevet 2. januar 2007 Del Skrevet 2. januar 2007 jeg ville heller gjort spørringen av brukerinput'en, også tilegne verdier til sessions som følge av det fantes noen brukere med det navnet. <?php $bruker = mysql_real_escape_string($_GET['name']); $resultat = mysql_query("SELECT * FROM Ordredata WHERE User='$bruker'"); $hvor_mange = mysql_num_rows($resultat); if ($hvor_mange==1) { $r = mysql_fetch_array($resultat, MYSQL_ASSOC); $_SESSION['client_id'] = $r['client_id']; } else echo 'Ingen bruker med den IDen finnes.'; ?> Selv om det ikke er lurt å gi ut info om at det ikke finnes/at det finnes en brukermed det navent/brukernavnet... Lenke til kommentar
Olavxxx Skrevet 3. januar 2007 Del Skrevet 3. januar 2007 Dette er "best practice" iht. PHP manualen (SQL injection) <?php // Quote variable to make safe function quote_smart($value) { // Stripslashes if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // Quote if not a number or a numeric string if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; } // Connect $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') OR die(mysql_error()); // Make a safe query $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s", quote_smart($_POST['username']), quote_smart($_POST['password'])); mysql_query($query); ?> Jeg ser forøvrig at ingen svarer på det du egentlig spør om (iallefall det jeg tror du spør om). Måten feks. Nextgentel sjekker om fakturanr er ditt, er at de har en egen tabell med fakturaer. Inni den tabellen, har de et foreign-key felt (fremmednøkkel), som du da har relasjon med bruker_id i brukertabellen. Eksempel: SELECT * FROM tbl_users, tbl_orders WHERE user_id = order_id_user_id_fk AND user_id=%s Det vil da returnere alle fakturaer til den gitte brukerid'en. Du må da selvsagt passe på at user_id da er innlogget brukerid, o.l. Bruk alltid strip_tags()på alle variabler som nærmer seg database! Lenke til kommentar
RulleRimfrost Skrevet 3. januar 2007 Forfatter Del Skrevet 3. januar 2007 (endret) Jepp jepp. Jeg skal prøve å lage noe slikt, som skal knyttes mot Joomla's loginsystem. Skal prøve å å legge inne en foreign-key i ekstern ordretabell og Joomlas user-table. Dette blir nok sikkert som banken... (Fant det best å prøve litt reverse engineering før jeg gjør noe på egenhånd) Endret 3. januar 2007 av RulleRimfrost Lenke til kommentar
The_Lozer Skrevet 3. januar 2007 Del Skrevet 3. januar 2007 Jepp jepp. Jeg skal prøve å lage noe slikt, som skal knyttes mot Joomla's loginsystem. Skal prøve å å legge inne en foreign-key i ekstern ordretabell og Joomlas user-table. Dette blir nok sikkert som banken... 7633824[/snapback] OT: banken er ikke sikker, noen har hacket den alt.. Lenke til kommentar
RulleRimfrost Skrevet 3. januar 2007 Forfatter Del Skrevet 3. januar 2007 Banken bruker sikkert asp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå