Hoi,

Ik heb een nieuwsscript maar de tekst die de gebruiker in het CMS kan invoeren wordt niet gechecked voordat het de DATABASE ingaat. Ik heb gehoord dat dat kan zorgen voor grote problemen.
Iemand een scriptje hoe ik eerst kan checken of de tekst geen rare SQL queries bevat?

dankje!

Marije
Alles wat je invuld checken en alles door addslashes en htmlspecialchars halen... dan heb je de meeste fouten eruit
Hoeft niet. Aan addslashes and friends heb je genoeg ;-)
Dat houdt in:
mysql_real_escape_value
addslashes
htmlentities
Ik was eerder :P
die drie regels moet ik aan mijn code toevoegen?
mysql_real_escape_value($str)
Wat houd dat in?

Iets van alle mogenlijke query commandos blokkeren tussen die in de $str staan?
je maakt er gewoon een functie van, Marije.
<?php

function safeMysqlInput( $input ) {
$output = mysql_real_escape_string( $input );
$output = addslashes( $output );
$output = htmlentities( $output );

return $output;
}

?>
Als je dan een bepaalde waarde hebt die je in de database wilt doen, doe je $waarde = safeMysqlInput( $waarde ).

Je kan het ook direct in je query doen: "INSERT INTO tabel (waarde) VALUES ( '" . safeMysqlInput( $waarde ) . "' )"
Dankje Pim.
Alleen weet ik niet zo goed waar ik de functie zou moeten plaatsen binnen mijn code.

if ($_GET[show] == "add" || $_POST["show"] == "add")
{
if ($_POST["titel"] && $_POST["msg"] && $_POST["mydate"] && $_POST["kop"])
{
$sql = "INSERT INTO nieuws (id, titel, msg, datum, kop) VALUES ('', '$_POST[titel]', '$_POST[msg]', '$_POST[mydate]', '$_POST[kop]')";
$res = mysql_query($sql);

if ($res)
{
echo "Het bericht is toegevoegd aan de site.";
}
else
{
echo "Het bericht is niet toegevoegd aan de site";
}
}
else
{
if ($_POST["submit"])
$err = "Enkele velden vergeten.";

if ($_POST["mydate"])
$cdate = $_POST["mydate"];
else
$cdate = date("Y-m-d");

$row[msg] = nl2br($row[msg]);


dit is onderdeel van mijn code. Zou je me kunnen vertellen waar ik dat het beste kan plaatsen?
het maakt niet uit waar je de functie neer zet, zolang je script er maar toegang tot heeft... (maak een php bestand funcions.php, en include dit bovenaan al je scripts). Dan kan je de functie gewoon gebruiken...

jou query word dan zo:

<?php
$sql = "INSERT INTO nieuws (id, titel, msg, datum, kop) VALUES ('', '" . safeMysqlInput( $_POST['titel'] ) ."', '" . safeMysqlInput( $_POST['msg'] . "', '" . safeMysqlInput( $_POST['mydate'] . "', '" . safeMysqlInput( $_POST['kop'] . "')";
?>
ok bedankt!
en weten jullie ook een manier om te testen of het werkt? ik weet niet welke kweeries je wel en niet kunt/mag invoeren nadat je deze functie hebt aangeroepen.

ik krijg trouwens een parse error met die sql query :(

unexpected ';'

Reageren