mysql_real_escape_string

  • Onderwerp starter Onderwerp starter feint
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

feint

Gebruiker
Lid geworden
3 jun 2008
Berichten
273
beste mensen,

onze host was gehackt door ghost61. ja heel vervelend.. maar!

ik ga ervan uit dat die gehacked is door sql injectie gezien dat de meest eenvoudige manier is lijkt me (als ik fout zit mag je dat gerust zeggen).

nu wil ik mysql_real_escape_string toevoegen aan mijn pagina waar dat moet. echter zou ik geen idee hebben hoe ik die moet gebruiken. Bij tuts zie je het meestal bij dingen zoals user en pass. maar die heb ik niet dus vroeg k mij af of jullie misschien een hint zouden kunnen geven.

de pagina

Code:
            <div id="content">

		<div class="post">
	<h1 class="title">Formulier </h1>
<BR />
<BR />
</div>
<div class="post3">
<!-- Start Form -->


<form method="POST" action="index.php?p=form" >
<table border="0" cellspacing="0" cellpadding="0">

<!-- voornaam -->


 <tr> 
   <td width="20%">Voornaam:*</td> 
    <td width="80%"><input type="text" name="vnaam" size="30" value="<?php echo $_POST['vnaam']?>"></td>
</tr>
<Br />



<tr> 
   <td width="20%">Achternaam:*</td> 
   <td width="80%"><input type="text" name="anaam" size="30" value="<?php echo $_POST['anaam'];?>"></td> 
</tr> 
<br />


<tr> 
   <td width="20%">Adres:*</td> 
   <td width="80%"><input type="text" name="adres" size="30" value="<?php echo $_POST['adres'];?>"></td> 
</tr> 
<Br />



<tr> 
   <td width="20%">Postcode:*</td> 
   <td width="80%"><input type="text" name="postcode" size="30" value="<?php echo $_POST['postcode'];?>"></td> 
</tr>
<br />


<tr> 
   <td width="20%">Woonplaats:*</td> 
   <td width="80%"><input type="text" name="woonplaats" size="30" value="<?php echo $_POST['woonplaats'];?>"></td> 
</tr> 
<br />



<tr> 
   <td width="20%">Geboortedatum: DD-MM-YYYY*</td> 
   <td width="80%"><input type="text" name="geboortedatum" size="30" value="<?php echo $_POST['geboortedatum'];?>"></td> 
</tr>
<br />



<tr> 
   <td width="20%">E-mailadres:*</td> 
   <td width="80%"><input type="text" name="email" size="30" value="<?php echo $_POST['email'];?>"></td> 
</tr>
<br />



<tr> 
   <td width="20%">Telefoonnummer:*</td> 
   <td width="80%"><input type="text" name="telefoonnummer" size="30" value="<?php echo $_POST['telefoonnummer'];?>"></td> 
</tr>
<Br />


<tr><td>&nbsp;</td></tr>
<tr><td><input type="submit" name="submit" value="Versturen"></td></tr>


<?php
if(isset($_POST['submit'])){
if($ok == "0" || $error == "0") {
echo "Vul de verplichte velden in. Deze zijn te herkennen aan een * .";
}
}
?>



<?php 

if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {

if (isset($_POST['vnaam']) && $_POST['vnaam']=="") {
echo "<div style='color: red;'>U heeft geen Voornaam ingevuld.<br></div>";
$ok = "0"; }

if (isset($_POST['anaam']) && $_POST['anaam']=="") {
echo "<div style='color: red;'>U heeft geen Achternaam ingevuld.<br></div>";
$ok = "0"; }

if (isset($_POST['adres']) && $_POST['adres']=="") {
echo "<div style='color: red;'>U heeft geen Adres ingevuld.<br></div>";
$ok = "0"; }

if (isset($_POST['postcode']) && $_POST['postcode']=="") {
echo "<div style='color: red;'>U heeft geen Postcode ingevuld.<br></div>";
$ok = "0"; }

if (isset($_POST['woonplaats']) && $_POST['woonplaats']=="") {
echo "<div style='color: red;'>U heeft geen Woonplaats ingevuld.<br></div>";
$ok = "0"; }

if (isset($_POST['geboortedatum']) && $_POST['geboortedatum']=="") {
echo "<div style='color: red;'>U heeft geen Geboortedatum ingevuld.<br></div>";
$ok = "0"; }

if (isset($_POST['email']) && $_POST['email']=="") {
echo "<div style='color: red;'>U heeft geen E-mail adres ingevuld.<br></div>";
$ok = "0"; }

elseif(!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $_POST['email'])) {
 echo "<div style='color: red;'>Dit is geen geldig E-mail adres.<br></div>";
$error = "0";
}

else {
$error="1";
}

if (isset($_POST['telefoonnummer']) && $_POST['telefoonnummer']=="") {
echo "<div style='color: red;'>U heeft geen Telefoonnummer ingevuld.<br></div>";
$ok = "0"; }

elseif(!eregi('^[0-9]{10}$', $_POST['telefoonnummer'])) {
 echo "<div style='color: red;'>Dit is geen geldig Telefoonnummer.<br></div>";
$error = "0";
}

else{
$error="1";
}
}


if(isset($_POST['submit'])) {
if($ok == "1" || $error == "1") {
$mail_to	=	"###";
$subject 	=	"Aanmelding ###";
$headers	=	"From: " .$vnaam." ".$anaam." <".$email.">\r\n";
$message	=	"Voornaam: " .$vnaam. " \n Achternaam: " .$anaam." \n Adres: ".$adres. "\n Postcode: " .$postcode. "\n Woonplaats: " .$woonplaats. "\n Geboortedatum: " .$geboortedatum. "\n E-mail adres: ".$email."\n Telefoonnummer: ".$telefoonnummer." \n Mobiel: ".$mobiel."\n";
$mail		= 	mail($mail_to, $subject, $message, $headers);
if($mail){
		echo"<div style='color: green;'> Bedankt voor uw aanmelding, uw informatie is verzonden!</div>";
}else{
		echo"<div style='color: red;'> Uw mail is niet verzonden, neem contact op met de webmaster!</div>";
}
}
}

?>


</div>

		<!-- end content -->

Ik ken alleen een beetje basis van php (zoals je hierboven misschien wel kunt zien :o).

hopelijk kunnen jullie mij op weg helpen!

alvast bedankt! :thumb:
 
Code:
if(isset($_POST['submit'])) {
if($ok == "1" || $error == "1") {
  //This stops SQL Injection in POST vars 
  include("./include/connectdb.php");
  foreach ($_POST as $key => $value) {$_POST[$key] = mysql_real_escape_string
  include("./include/disconnectdb.php");
($value);}

mysql_real_escape_string werkt helaas alleen als je een databaseconnectie hebt.
 
De code die je hebt geplaatst bevat geen mysql onderdelen, het doet alleen de verwerking van een formulier (met als uiteindelijke doel een mail te sturen).
 
dus als ik het goed begrijp is dit ding water dicht voor zover dat mogelijk is? :p
 
Je gebruikt verouderde methodes, dus of het waterdicht is kan ik niet zeggen. Hiermee doel ik naast de eregi vooral op het rechtstreeks naar variabelen linken ipv naar de post array ($vnaam ipv $_POST["vnaam"]). Er is ongetwijfeld een reden geweest waarom deze methode is uitgefaseerd, dus misschien is het nuttig om de redenen achter die verandering op te zoeken.

Belangrijker is het om op te zoeken wát er is gehackt en hóe dat is gedaan. Als ik google naar de naam die je noemde zie ik vooral berichten over ge-deface-te (vind daar maar eens een nederlands woord voor, ik bedoel dat het aangezicht van de site is verandert) sites zonder echte schade. In bijna alle gevallen gaat het om een slecht ontworpen, third party, blog sjabloon en de bijbehorende javascript al dan niet in combinatie met een map op de webserver met alle bevoegdheden (chmod 777).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan