Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

escape [cred ca sunt prea obosit]
Vezi mesajul original
Du-te la pagina 1, 2  Următoare
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Subiectul anterior :: Subiectul următor  
Autor Mesaj
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Joi Iun 05, 2008 8:12 pm    Titlul subiectului: escape [cred ca sunt prea obosit]  

am un asa

$page = mysql_real_escape_string(stripslashes($_GET['pagina']));
$sql = 'SELECT * FROM `tabel` WHERE `site`="'.$page.'"';

daca pun pagina=ceva"text imi da eroare de mysql... ca si cum escape-ul nu ar functiona.

daca dau print $page; imi iese ceva\"text si... nu ma prind care e ideea? de unde eroarea?

asta se intampla pe 2 masini... deci nu cred ca are PHP-ul meu nimic

edit // pot sa dau htmlspecialchars cu ENT_QUOTES dar... nu vreau, nu ma prind unde e greseala la escape
Sus  
jianuovidiu



Data înscrierii: 16/Mar/2006
Mesaje: 321
Locație: Bucharest

Trimis: Vin Iun 06, 2008 9:35 am    Titlul subiectului:  

incearca in formatul asta:
Cod:
$page = $_GET["pagina"];
$sql = "SELECT * FROM tabel WHERE site='$page'";
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Vin Iun 06, 2008 9:40 am    Titlul subiectului:  

:lol:

// da si, vine gigel si pune un DROP table
Sus  
jianuovidiu



Data înscrierii: 16/Mar/2006
Mesaje: 321
Locație: Bucharest

Trimis: Vin Iun 06, 2008 9:43 am    Titlul subiectului:  

Incearca sa dai DROP TABLE. Merge ?
Sus  
Maniero



Data înscrierii: 14/Mai/2008
Mesaje: 8

Trimis: Vin Iun 06, 2008 9:51 am    Titlul subiectului:  

in linia:
$page = mysql_real_escape_string(stripslashes($_GET['pagina']));

inverseaza ordinea functiilor, asa:
$page = stripslashes(mysql_real_escape_string($_GET['pagina']));
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Vin Iun 06, 2008 9:58 am    Titlul subiectului:  

ok... hai sa-ti explic, e vorba de sql-injection si nu am de gand sa stau cu warning-uri prin pagina sau cu erori de sql... un DROP nu se da pur si simplu, am dat un exemplu exagerat dar... nu e or rezolvare, asta e clar...

si, nu vad diferenta dintre codul meu si codul tau... la tine e nevoie de escape la ghilimele simple, la mine de ghilimele duble... partea proasta e ca eu nu folosesc mereu ghilimelele duble si am nevoie de o functie care sa imi ofere protectie in orice situatie deci... Concluzie: nu asta e solutia
Sus  
jianuovidiu



Data înscrierii: 16/Mar/2006
Mesaje: 321
Locație: Bucharest

Trimis: Vin Iun 06, 2008 10:00 am    Titlul subiectului:  

stiu ca e sql injection.
Dar io chiar vreau sa testez acum cum pot sa fac drop la database din exemplul tau.

Eu n-am reusit. Ma poate ajuta cineva??...daca nu o sa deschid si un topic pe tema asta :D
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Vin Iun 06, 2008 10:00 am    Titlul subiectului:  

Maniero a scris: in linia:
$page = mysql_real_escape_string(stripslashes($_GET['pagina']));

inverseaza ordinea functiilor, asa:
$page = stripslashes(mysql_real_escape_string($_GET['pagina']));

pai, care e ideea? mysql_real_escape_string pune \ iar stripslashes le scoate :) si se ajunge la scriptul lui ovidiu
Sus  
Maniero



Data înscrierii: 14/Mai/2008
Mesaje: 8

Trimis: Vin Iun 06, 2008 10:05 am    Titlul subiectului:  

mda :)
Pe de alta parte, sa dai stripslashes la un text unescaped nu rezolva/modifica nimic.
Ma refer la stripslashes($_GET['pagina']);
Sus  
Maniero



Data înscrierii: 14/Mai/2008
Mesaje: 8

Trimis: Vin Iun 06, 2008 10:08 am    Titlul subiectului:  

Da pt ca tu ai nevoie de string-ul respectiv pt un SELECT, eu zic ca nu ai nevoie de stripslashes. Adica iti trebuie doar:
mysql_real_escape_string($_GET[]);
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Vin Iun 06, 2008 10:19 am    Titlul subiectului:  

pai... ideea e ca am mysql_real_escape_string(CEVA) dar e posibil ca CEVA sa mai fi primit escape din alta parte iar in cazul unui INSERT voi avea in baza ghilimele cu \ ... astfel pun mysql_real_escape_string(strip(CEVA)) ca sa fiu sigur ca strip(CEVA) e 'curat' ;)

nu stiu daca o fi ceva din setarile PHP referitor la porcaria asta...
Sus  
jianuovidiu



Data înscrierii: 16/Mar/2006
Mesaje: 321
Locație: Bucharest

Trimis: Vin Iun 06, 2008 12:00 pm    Titlul subiectului:  

Vreau si eu sa-mi demonstreze careva daca se poate face sql injection folosind codul:

Cod:
$page = $_GET["pagina"];
$sql = "SELECT * FROM tabel WHERE site='$page'";


Va rog dati exemple testate/verificate.
Eu am incercat si nu am reusit.

Multumesc.
Sus  
Birkoff



Data înscrierii: 18/Mar/2004
Mesaje: 2573
Locație: Bucuresti

Trimis: Vin Iun 06, 2008 12:22 pm    Titlul subiectului:  

// Fix input variables
if (get_magic_quotes_gpc())
{
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_COOKIE = array_map('stripslashes', $_COOKIE);
}
Sus  
kyron



Data înscrierii: 16/Sep/2004
Mesaje: 542
Locație: Bucuresti

Trimis: Vin Iun 06, 2008 12:35 pm    Titlul subiectului:  

jianuovidiu a scris: Vreau si eu sa-mi demonstreze careva daca se poate face sql injection folosind codul:

Cod:
$page = $_GET["pagina"];
$sql = "SELECT * FROM tabel WHERE site='$page'";


Va rog dati exemple testate/verificate.
Eu am incercat si nu am reusit.

Multumesc.

Daca $page este asa: ';DELETE FROM tabel WHERE 1 = '1 atunci query-ul devine:

SELECT * FROM tabel WHERE site='';DELETE FROM numere WHERE 1 = '1'

Si se cam goleste tabela.
Sus  
Birkoff



Data înscrierii: 18/Mar/2004
Mesaje: 2573
Locație: Bucuresti

Trimis: Vin Iun 06, 2008 12:50 pm    Titlul subiectului:  

kyron a scris:
Daca $page este asa: ';DELETE FROM tabel WHERE 1 = '1 atunci query-ul devine:

SELECT * FROM tabel WHERE site='';DELETE FROM numere WHERE 1 = '1'

Si se cam goleste tabela.

daca magic_quotes_gpc este ON (in php.ini) atunci va pune slashes automat si codul tau nu va mai fi chiar asa... pe cand daca e OFF (gresala adminului acelui server) atunci poti face sql injection fara prea mari eforturi (daca nu se fac verificari in script desigur)...
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători Du-te la pagina 1, 2  Următoare
Pagina 1 din 2


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community