anti-SQLI
Ik en een vriend hebben een website.
Maar onze site is SQLI vurnable.
We hebben alle onder werpen hier gelezen over SQLI bescherming.
Maar dat werkte helaas niet.
Misschien doen we iets verkeerd.
Kan iemand ons misschien helpen?
De anti-SQLI moet op deze code:
Quote:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>waarschuwingen!</title>
<link rel="shortcut icon" href="http://megahelping.nl/favicon.ico" >
<link rel="stylesheet" type="text/css" href="/style.css" />
<link rel="stylesheet" type="text/css" href="/popups.css" />
<link rel="stylesheet" type="text/css" href="/forumstyle.css" />
<link rel="stylesheet" type="text/css" href="/roundbox.css " />
<style type="text/css">
, h1{ background-color: #4169E1; }
body { background-color: #ffffff; }
#boem{
border:1px solid #DEDEDE;
}
</style>
</head>
<body>
<table cellspacing="0" width="100%">
<tr class="fout">
<td>Reden</td>
<td>van</td><td>Datum</td></tr>
</table>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>waarschuwingen!</title>
<link rel="shortcut icon" href="http://megahelping.nl/favicon.ico" >
<link rel="stylesheet" type="text/css" href="/style.css" />
<link rel="stylesheet" type="text/css" href="/popups.css" />
<link rel="stylesheet" type="text/css" href="/forumstyle.css" />
<link rel="stylesheet" type="text/css" href="/roundbox.css " />
<style type="text/css">
, h1{ background-color: #4169E1; }
body { background-color: #ffffff; }
#boem{
border:1px solid #DEDEDE;
}
</style>
</head>
<body>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$Leden = mysql_query("SELECT ID,Lid,Reden,Van,Datum FROM ForumWarning WHERE Lid = '{$_GET["id"]}' LIMIT 1");
while($Lid = mysql_fetch_object($Leden)) {
echo "<strong>Fouten Van ".Lid($Lid->Lid)."</strong> <br />";
}
?>
$Leden = mysql_query("SELECT ID,Lid,Reden,Van,Datum FROM ForumWarning WHERE Lid = '{$_GET["id"]}' LIMIT 1");
while($Lid = mysql_fetch_object($Leden)) {
echo "<strong>Fouten Van ".Lid($Lid->Lid)."</strong> <br />";
}
?>
<table cellspacing="0" width="100%">
<tr class="fout">
<td>Reden</td>
<td>van</td><td>Datum</td></tr>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$Leden = mysql_query("SELECT ID,Lid,Reden,Van,Datum FROM ForumWarning WHERE Lid = '{$_GET["id"]}'");
while($Lid = mysql_fetch_object($Leden)) {
echo("
<tr class=\"boem\"><td width=\"200px\">$Lid->Reden</td>
<td>".Lid($Lid->Van)."</td><td>".date("d-m-Y H:i",$Lid->Datum)."</td></tr>");
}
?>
$Leden = mysql_query("SELECT ID,Lid,Reden,Van,Datum FROM ForumWarning WHERE Lid = '{$_GET["id"]}'");
while($Lid = mysql_fetch_object($Leden)) {
echo("
<tr class=\"boem\"><td width=\"200px\">$Lid->Reden</td>
<td>".Lid($Lid->Van)."</td><td>".date("d-m-Y H:i",$Lid->Datum)."</td></tr>");
}
?>
</table>
</body>
</html>
Bedankt!
Moet je wel mysqli query gebruiken
Wat bedoel je met anti-sqli? sql-injection?
Als het gaat om beveiliging,dan hebben jullie nog lang niet alle onderwerpen gelezen. Op dit forum staat een tut daarover, waarin uitgelegd wordt dat je gebruikersinput nooit moet geloven. Controleren of iets bestaat, controleren of dat wat er binnen komt ook dat is wat je verwachten. En zelfs dan nog de query beveiligen en foutafhandeling inbouwen.
Zet error-reporting eens aan.
Met {$_GET["id"]} in je query is het dus vragen op problemen.
Daarnaast: gebruik in php (echo) ' en html ".
Nu moet je \ gebruiken in je html. Is meer werk, is kansen op fouten, is onoverzichtelijk.
Obelix en Idefix op 09/06/2012 14:04:28:
Code tussen code-tags.
Wat bedoel je met anti-sqli? sql-injection?
Als het gaat om beveiliging,dan hebben jullie nog lang niet alle onderwerpen gelezen. Op dit forum staat een tut daarover, waarin uitgelegd wordt dat je gebruikersinput nooit moet geloven. Controleren of iets bestaat, controleren of dat wat er binnen komt ook dat is wat je verwachten. En zelfs dan nog de query beveiligen en foutafhandeling inbouwen.
Zet error-reporting eens aan.
Met {$_GET["id"]} in je query is het dus vragen op problemen.
Daarnaast: gebruik in php (echo) ' en html ".
Nu moet je \ gebruiken in je html. Is meer werk, is kansen op fouten, is onoverzichtelijk.
Wat bedoel je met anti-sqli? sql-injection?
Als het gaat om beveiliging,dan hebben jullie nog lang niet alle onderwerpen gelezen. Op dit forum staat een tut daarover, waarin uitgelegd wordt dat je gebruikersinput nooit moet geloven. Controleren of iets bestaat, controleren of dat wat er binnen komt ook dat is wat je verwachten. En zelfs dan nog de query beveiligen en foutafhandeling inbouwen.
Zet error-reporting eens aan.
Met {$_GET["id"]} in je query is het dus vragen op problemen.
Daarnaast: gebruik in php (echo) ' en html ".
Nu moet je \ gebruiken in je html. Is meer werk, is kansen op fouten, is onoverzichtelijk.
Het gaat niet om de code we willen graag anti-sql injection erop maar het lukt niet.
Roy Stijsiger op 09/06/2012 14:06:15:
Het gaat niet om de code we willen graag anti-sql injection erop maar het lukt niet.
Leg eens beter uit wat je dan wel bedoelt.
En wat lukt er niet?
Wat heb je al geprobeerd?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$Leden = mysql_query("SELECT ID,
Lid,
Reden,
Van,
Datum
FROM
ForumWarning
WHERE Lid = '".mysql_real_escape_string($_GET['id'])."'
");
?>
$Leden = mysql_query("SELECT ID,
Lid,
Reden,
Van,
Datum
FROM
ForumWarning
WHERE Lid = '".mysql_real_escape_string($_GET['id'])."'
");
?>
Gewijzigd op 09/06/2012 14:09:01 door Bart V B
Obelix en Idefix op 09/06/2012 14:07:36:
Leg eens beter uit wat je dan wel bedoelt.
En wat lukt er niet?
Wat heb je al geprobeerd?
Roy Stijsiger op 09/06/2012 14:06:15:
Het gaat niet om de code we willen graag anti-sql injection erop maar het lukt niet.
Leg eens beter uit wat je dan wel bedoelt.
En wat lukt er niet?
Wat heb je al geprobeerd?
Op hack-forum.net stond allemaal suggesties die werken niet.
Zijn allerlei codes ik ben wel thuis in het gebruiken van php & mysql ik bedoel ik ben 16 en heb alles mezelf geleerd en via sites..
Toevoeging op 09/06/2012 14:11:39:
Bart V B op 09/06/2012 14:08:40:
Je code is zo lek als een zeef..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$Leden = mysql_query("SELECT ID,
Lid,
Reden,
Van,
Datum
FROM
ForumWarning
WHERE Lid = '".mysql_real_escape_string($_GET['id'])."'
");
?>
$Leden = mysql_query("SELECT ID,
Lid,
Reden,
Van,
Datum
FROM
ForumWarning
WHERE Lid = '".mysql_real_escape_string($_GET['id'])."'
");
?>
Ik ga deze even proberen
Obelix zegt niet voor niets dat je die dingen moet doen, dat is al een stap naar de goede richting om je sql te beveiligen
Quote:
Ik ga deze even proberen
Als dit niet werkt, dan doe je het zelf fout. ;)
Reshad F op 09/06/2012 14:12:22:
Obelix zegt niet voor niets dat je die dingen moet doen, dat is al een stap naar de goede richting om je sql te beveiligen
Die fouten hebben die er volgens hem zitten hebben toch niets te maken met de sql injectie en worden ook niet als fout aangegeven. Het is misschien niet helemaal correct dat zou kunnen.
Toevoeging op 09/06/2012 14:18:39:
Het is gefixt!
Het vreemde is de code
'".mysql_real_escape_string($_GET['id'])."' is op al mijn andere pagina's wel aanwezig.(gelukkig)
Dank jullie wel! xD
Dit zal ik nooit meer vergeten:O
DANKJE:D
Quote:
Die fouten hebben die er volgens hem zitten hebben toch niets te maken met de sql injectie en worden ook niet als fout aangegeven.
Dat kan, maar je moet leren om logica in je script te brengen.
Je moet leren om dingen af te dwingen wat in je applicatie wel en niet moet gebeuren.
Dus als er iets van een $_GET['id'] een nummer behoort te zijn, dan moet je dat afdwingen. met isset() en is_int() bijvoorbeeld. Is het dat niet, dan moet je daar een foutmelding op geven bijvoorbeeld. En dan als je daadwerkelijk de query gaat doen met mysql_real_escape_string() dicht timmeren. Meer is het niet.
Bart V B op 09/06/2012 14:20:18:
Dat kan, maar je moet leren om logica in je script te brengen.
Je moet leren om dingen af te dwingen wat in je applicatie wel en niet moet gebeuren.
Dus als er iets van een $_GET['id'] een nummer behoort te zijn, dan moet je dat afdwingen. met isset() en is_int() bijvoorbeeld. Is het dat niet, dan moet je daar een foutmelding op geven bijvoorbeeld. En dan als je daadwerkelijk de query gaat doen met mysql_real_escape_string() dicht timmeren. Meer is het niet.
Quote:
Die fouten hebben die er volgens hem zitten hebben toch niets te maken met de sql injectie en worden ook niet als fout aangegeven.
Dat kan, maar je moet leren om logica in je script te brengen.
Je moet leren om dingen af te dwingen wat in je applicatie wel en niet moet gebeuren.
Dus als er iets van een $_GET['id'] een nummer behoort te zijn, dan moet je dat afdwingen. met isset() en is_int() bijvoorbeeld. Is het dat niet, dan moet je daar een foutmelding op geven bijvoorbeeld. En dan als je daadwerkelijk de query gaat doen met mysql_real_escape_string() dicht timmeren. Meer is het niet.
Dat is waar ik heb niet zoveel verstand van de scripters hier maar dat verwacht ik ook niet. Ik ben 16 en heb nog nooit een opleiding of wat dan ook gedaan. Ik weet niet of dat bij jullie wel zo is maar goed.
Je kan op 2 manieren iets leren met programmeren:
1. Een keer heel hard op je bek gaan en een gehackte site geconfronteerd worden.
Sorry dat ik het zo hard zeg.. ;) Bedoel het op een positieve manier uiteraard.
2. Ieder deel van je script 20 keer overzien, en vergelijken met dingen uit het dagelijks leven. Als jij van huis gaat, dan laat je je huisdeur ook niet open staan.
Als er een wild vreemde aan de deur staat laat je die ook niet zomaar binnen zonder te weten wie het is of komt doen.
Een opleiding om te leren scripten is niet echt nodig, als je maar goed bewust bent van de gevaren. En daar ook wat mee doet om te voorkomen.
Bart V B op 09/06/2012 14:28:20:
Dat je 16 bent is geen reden om dingen niet te kunnen natuurlijk.
Je kan op 2 manieren iets leren met programmeren:
1. Een keer heel hard op je bek gaan en een gehackte site geconfronteerd worden.
Sorry dat ik het zo hard zeg.. ;) Bedoel het op een positieve manier uiteraard.
2. Ieder deel van je script 20 keer overzien, en vergelijken met dingen uit het dagelijks leven. Als jij van huis gaat, dan laat je je huisdeur ook niet open staan.
Als er een wild vreemde aan de deur staat laat je die ook niet zomaar binnen zonder te weten wie het is of komt doen.
Een opleiding om te leren scripten is niet echt nodig, als je maar goed bewust bent van de gevaren. En daar ook wat mee doet om te voorkomen.
Je kan op 2 manieren iets leren met programmeren:
1. Een keer heel hard op je bek gaan en een gehackte site geconfronteerd worden.
Sorry dat ik het zo hard zeg.. ;) Bedoel het op een positieve manier uiteraard.
2. Ieder deel van je script 20 keer overzien, en vergelijken met dingen uit het dagelijks leven. Als jij van huis gaat, dan laat je je huisdeur ook niet open staan.
Als er een wild vreemde aan de deur staat laat je die ook niet zomaar binnen zonder te weten wie het is of komt doen.
Een opleiding om te leren scripten is niet echt nodig, als je maar goed bewust bent van de gevaren. En daar ook wat mee doet om te voorkomen.
Nee klopt maar wat ik daarmee gewoon wou zeggen is dat ik nog niet zo lang ervaring hebt dus dat ik dat moeilijk vind ^^
Je kunt in een form ook een verborgen input text gebruiken en is dus niet aan te passen door client. Oftewel je kunt hierdoor gewoon verborgen values posten.
bijv:
formulier.php :
-->
<style type="text/css">
#hide { display: none; }
</style>
<form action="bestand.php" method="POST">
<input id="hide" type="text" value="1" name="id">
<input type="submit">
</form>
<--
bestand.php :
Gewijzigd op 10/06/2012 02:17:20 door B Polak
Surf Secure op 10/06/2012 02:16:43:
Je kunt in een form ook een verborgen input text gebruiken en is dus niet aan te passen door client. Oftewel je kunt hierdoor gewoon verborgen values posten.
Wil je alsjeblieft niet dat soort onzin verkopen. Alle input die van een browser komt is per definitie niet te vertrouwen. Ook hidden inputs die in een POST komen zijn heeeeel simpel aan te passen voor iemand die kwaad wil.
Quote:
Oftewel je kunt hierdoor gewoon verborgen values posten.
klik op je rechter muisknop op het item laat bron zien..
even zoeken naar het formulier.. Zijn ze dan nog zo verborgen? ;)
De enige juiste manier is afdwingen wat jij wenst te hebben.
Gebeurd dat niet, dan moet je er een foutmelding opgeven.
En dat moet ook niet javascript maar echt aan de serverkant, dus in dit geval met php..
Erwin H op 10/06/2012 08:35:35:
Wil je alsjeblieft niet dat soort onzin verkopen. Alle input die van een browser komt is per definitie niet te vertrouwen. Ook hidden inputs die in een POST komen zijn heeeeel simpel aan te passen voor iemand die kwaad wil.
Surf Secure op 10/06/2012 02:16:43:
Je kunt in een form ook een verborgen input text gebruiken en is dus niet aan te passen door client. Oftewel je kunt hierdoor gewoon verborgen values posten.
Wil je alsjeblieft niet dat soort onzin verkopen. Alle input die van een browser komt is per definitie niet te vertrouwen. Ook hidden inputs die in een POST komen zijn heeeeel simpel aan te passen voor iemand die kwaad wil.
<< dat en bovendien is er niks mis met $_GET. Wat je met GET kan kan je ook met POST. Daarnaast als je een goeie beveiliging hebt in je code zoals:
-controleren of variable aanwezig is
-tegen injecties beveiligt
zijn beide even veilig hoor
Het is opgelost met dank aan de mensen hier die me duidelijk maakte hoe ik alles moest na lopen en hoe ik het kon beveiligen.
Ik heb gewoon iets goeds geleerd.