SQL Exploit
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
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 -
Dus sorry bij deze
Code (php)
1
2
3
4
2
3
4
<?php
$check = mysql_query("SELECT * FROM clips WHERE id= '".mysql_real_escape_string($_GET['id'])."'");
$lees = mysql_fetch_assoc($check);
?>
$check = mysql_query("SELECT * FROM clips WHERE id= '".mysql_real_escape_string($_GET['id'])."'");
$lees = mysql_fetch_assoc($check);
?>
mysql_real_escape toe aan elke variabele die je in een SELECT, INSERT, UPDATE of DELETE query stopt.
Pas het niet alleen daar aan waar Aar het zegt maar voeg edit:
zo dus:
Code (php)
1
2
3
4
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);
?>
$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 -
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...
@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 :).
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
Aaaaaaaarghh! "Maar bedankt voor de aanvulling :)."