Hallo,

Op mijn site heb ik nu een gastenboek en een soort vraag en aanbod.

Bij het gastenboek kunnen de mensen zelf online iets neerzetten, en bij de vraag en aanbod kan iemand een advertentie plaatsen doormiddel van een formuliertje. En die gegevens worden dan in de database gezet, en ook weer uitgelezen op de vraag en aanbod pagina.

Maar ik zat allemaal te zoeken op websites etc.
Maar toen merkte ik op dat men via sql injection de site kan gaan vergallen.

Kunnen ze dat ook doen via mij vraag en aanbod en mij gastenboek?

Ik hoop dat jullie me kunnen helpen :)
Ik probeer zelf altijd html in mij database te vermijden.

als je dingen in het database wilt plaatse gebruik:
strip_tags() en mysql_real_escape_string()

Als je het wilt weergeven gebruik:
htmlentities()

en dan de overige dingen zoals newline to break, ubbc ect.
Ik heb het gedaan zoals Andries zei,

Echter waneer ik nu bijvoorbeeld <a href="sgsg">sgfsgs</a> intyp bij naam.

Wordt het toch gewoon een link op de pagina.
Het werkt :D

Ik heb telkens de verkeerde script geupload :O

Wat ik nu dus krijg te zien is;

als iemand dit invult bij product

<a href="sgsg">sgfsgs</a>

Krijg ik bij product dit te zien
<a href="sgsg">sgfsgs</a>

En ik kan die niet aanklikken.

Dus het moet werken dan als het goed is :D
En om het nu helemaal goed te beveiligen,
gebruik maken van strip_tags() en mysql_real_escape_string().
En waar moet ik die plaatsen dan?

VALUES('".htmlentities strip_tags() ($_POST['product'])."

zo?
'".mysql_real_escape_string(strip_tags(htmlentities($_POST['product'])))."'

zo volgens mij en dan met alle variabelen.
alleen word het wel een lange regel.

dus ik stel voor om het zo te doen:

<?
$product = mysql_real_escape_string(strip_tags(htmlentities($_POST['product'])));
?>


Dus je maakt van alle dingen een variabelen aan.

en dan word je query zoiets als:

<?
mysql_query("INSERT INTO vraagenaanbod (product,naam,plaats,telefoonnummer,email,bericht,prijs,soort,datum) VALUES('".$product."','".$naam."','"$plaats."',
// ...... gaat verder ect. 
'".$date."')") or die ( mysql_error() );
?>
nee,

<?php
VALUES('".htmlentities(strip_tags(mysql_real_escape_string($_POST['product'])))."')
?>

Dit lijkt er meer op...
maar het is handiger als je het op deze manier doet
<?php
if(!empty($_POST['product']){
$product = htmlentities(striptags(mysql_real_escape_string($_POST['product'])));
}else{
echo 'U moet wel een product kiezen';
}

// en dan je sql

$sql = "INSERT INTO tabel_naam (producten) VALUES ('".$product."')";
$res = mysql_query($sql);

if($res){
echo 'Het is goed gegaan';
}else{
echo 'er is iets fout gegaan';
}
?>
Inderdaad, naar zoiets wat Arian post zoek ik al een hele tijd, van het is goed er is fout gegaan.

Maar ik heb al verschillende dingen geprobeerd om dat toe te passen maar het lukt me maar niet.

En met dit;

<?php
VALUES('".htmlentities(striptags(mysql_real_escape_string($_POST['product'])))."')
?>


Krijg in op de pagina te zien als ikhet wil plaatsen;

Fatal error: Call to undefined function: striptags() in (sitenaam) on line 6
Kan ook, ik wist even de goeie volgorde niet.
@Stefan:
Die error betekend dat de functie striptages() niet bestaat...

Het is strip_tags()
typfoutje...

Reageren