SQL Exploit

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Theo Janssen

Theo Janssen

24/07/2011 21:59:21
Quote Anchor link
Beste mensen,

Ik heb een site gekocht en deze word telkens gehackt nu heb ik de logs bekeken en geconstateert dat het door video.inc.php komt wss.
Kunnen jullie me hierbij helpen om dit op te lossen

Code verwijderd, plaats alleen relevante code...[/modedit]


betreffende bestand.

mvg
Gewijzigd op 25/07/2011 10:27:02 door Joren de Wit
 
PHP hulp

PHP hulp

06/11/2024 00:36:57
 
- Ariën  -
Beheerder

- Ariën -

24/07/2011 22:03:37
Quote Anchor link
mysql_real_escape_string() over je $_GET['id'] in je query, en e.v.t. andere $_POST, $_GET, $_COOKIE, $_SESSION variabelen.

En als je weet dat het een SQL-inction is, waarom geef je meteen 600 regels code i.p.v. wat relevant is?
Gewijzigd op 24/07/2011 22:04:33 door - Ariën -
 
Theo Janssen

Theo Janssen

24/07/2011 22:09:19
Quote Anchor link
Ik heb zelf geen verstand van php helaas heb wel boeken gekocht maar moet er nog in deze site heb ik overgenomen en via de logs bekeken wat er mis was.
Dus sorry bij deze
 
- Ariën  -
Beheerder

- Ariën -

24/07/2011 23:27:38
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$check
  = mysql_query("SELECT * FROM clips WHERE id= '".mysql_real_escape_string($_GET['id'])."'");
$lees  = mysql_fetch_assoc($check);      
?>
 
The Force

The Force

25/07/2011 00:36:50
Quote Anchor link
Pas het niet alleen daar aan waar Aar het zegt maar voeg mysql_real_escape toe aan elke variabele die je in een SELECT, INSERT, UPDATE of DELETE query stopt.
 
Victor -

Victor -

25/07/2011 10:40:14
Quote Anchor link
en geen * gebruiken, altijd selecteren wat je wilt hebben.

edit:
zo dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$check
  = mysql_query("SELECT dit, dat, zus, zo FROM clips WHERE id= '".mysql_real_escape_string($_GET['id'])."'");
$lees  = mysql_fetch_assoc($check);      
?>
Gewijzigd op 25/07/2011 10:40:52 door Victor -
 
Joren de Wit

Joren de Wit

25/07/2011 10:48:19
Quote Anchor link
The Force op 25/07/2011 00:36:50:
Pas het niet alleen daar aan waar Aar het zegt maar voeg mysql_real_escape toe aan elke variabele die je in een SELECT, INSERT, UPDATE of DELETE query stopt.

Het voorkomen van SQL injectie is een kwestie van zeker weten wat er in je variabelen staat. Roepen dat je altijd maar mysql_real_escape_string() moet gebruiken is dan ook niet helemaal terecht. In het voorbeeld van Aar ben ik het dan ook niet eens met het gebruik van de functie, simpelweg omdat het geen zin heeft als de variabele vooraf goed gecontroleerd is.

Laat me dit uitleggen: het gaat in dat voorbeeld om een id, een waarde die in 9 van de 10 gevallen een integer is. Voordat je dus ook maar nadenkt over het opzetten van een query, zou je die eigenschap van de variabele moeten controleren. De functie ctype_digit() is daarvoor zeer geschikt als het een $_GET variabele betreft, want deze zal false terug geven zodra er ook maar een ander teken dan een cijfer in de string voorkomt. Conclusie na gebruik van deze functie is dat het een variabele met alleen maar cijfers betreft en er dus geen gevaar voor SQL injectie is. Het gebruik van de escape functie is dus nutteloos in dit geval.

Kortom, de strekking van dit verhaal is dat je ALLE variabelen die afkomstig zijn uit gebruikers input moet controleren op hun inhoud. Pas als je overtuigd bent van een correcte inhoud denk je na over het opzetten van een query, waarbij je mysql_real_escape_string() gebruikt voor elke string die je wilt wegschrijven...
 
The Force

The Force

25/07/2011 12:53:12
Quote Anchor link
@Joren, daar ben ik het met je eens. Het ging mij erom dat hij niet dat regeltje code zou aanpassen om dan te denken dat het veilig is. Aangezien hij geen verstand heeft van PHP was het het makkelijkste uit te leggen dat hij mysql_real_escape overal moet toepassen. Maar bedankt voor de aanvulling :).
 
Bas IJzelendoorn

Bas IJzelendoorn

25/07/2011 13:15:14
Quote Anchor link
The Force op 25/07/2011 12:53:12:
het makkelijkste uit te leggen dat hij mysql_real_escape overal moet toepassen. Maar bedankt voor de aanvulling :).


het is:

mysql_real_escape_string()

:)
Gewijzigd op 25/07/2011 13:16:00 door Bas IJzelendoorn
 
The Force

The Force

25/07/2011 14:11:37
Quote Anchor link
Aaaaaaaarghh! "Maar bedankt voor de aanvulling :)."
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.