Tekst veilig de Database in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Marije

Marije

28/03/2006 18:36:00
Quote Anchor link
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
 
PHP hulp

PHP hulp

03/01/2025 06:10:27
 
Han eev

Han eev

28/03/2006 18:39:00
Quote Anchor link
Alles wat je invuld checken en alles door addslashes en htmlspecialchars halen... dan heb je de meeste fouten eruit
 

28/03/2006 18:39:00
Quote Anchor link
Hoeft niet. Aan addslashes and friends heb je genoeg ;-)
Dat houdt in:
mysql_real_escape_value
addslashes
htmlentities
 
Han eev

Han eev

28/03/2006 18:42:00
Quote Anchor link
Ik was eerder :P
 
Marije

Marije

28/03/2006 19:17:00
Quote Anchor link
die drie regels moet ik aan mijn code toevoegen?
 
Pieter van Linschoten

Pieter van Linschoten

28/03/2006 19:35:00
Quote Anchor link
mysql_real_escape_value($str)
Wat houd dat in?

Iets van alle mogenlijke query commandos blokkeren tussen die in de $str staan?
 
Pim Vernooij

Pim Vernooij

28/03/2006 19:50:00
Quote Anchor link
je maakt er gewoon een functie van, Marije.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?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 ) . "' )"
Gewijzigd op 28/03/2006 19:51:00 door Pim Vernooij
 
Marije

Marije

28/03/2006 19:53:00
Quote Anchor link
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?
 
Pim Vernooij

Pim Vernooij

28/03/2006 19:57:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "INSERT INTO nieuws (id, titel, msg, datum, kop) VALUES ('', '" . safeMysqlInput( $_POST['titel'] ) ."', '" . safeMysqlInput( $_POST['msg'] . "', '" . safeMysqlInput( $_POST['mydate'] . "', '" . safeMysqlInput( $_POST['kop'] . "')";
?>
 
Marije

Marije

28/03/2006 20:01:00
Quote Anchor link
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.
 
Marije

Marije

28/03/2006 20:07:00
Quote Anchor link
ik krijg trouwens een parse error met die sql query :(

unexpected ';'
Gewijzigd op 28/03/2006 20:09:00 door Marije
 
Lissy Pixel

Lissy Pixel

28/03/2006 20:10:00
Quote Anchor link
Ik zit al voor je te kijken in de queery waar een 'of " te veel of te weinig is... Blijf dit lastig vinden!!
 
Lissy Pixel

Lissy Pixel

28/03/2006 20:13:00
Quote Anchor link
Volgens mij met die ( ) aan het begin en eind.
Deze kleuren bij mij in mijn editor niet goed dus kloppen dan niet.
 
Marije

Marije

28/03/2006 20:14:00
Quote Anchor link
hmm geen idee. Heeft het niets te maken met de dubbele ' en " ?
 
Lissy Pixel

Lissy Pixel

28/03/2006 20:15:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
('', '" . safeMysqlInput( $_POST['titel'] ) ."', '" . safeMysqlInput( $_POST['msg'] . "', '" . safeMysqlInput( $_POST['mydate'] . "', '" . safeMysqlInput( $_POST['kop'] . "')";
?>


Waarvoor staat dit '' aan het begin van de query als ik vragen mag?
 
Pieter van Linschoten

Pieter van Linschoten

28/03/2006 20:17:00
Quote Anchor link
Ik keek even naar jou script pim, en ik dacht dit te zien:
$_PEST['kop']

;)

Post hier de query die je gebruikt & de error die je krijgt... dan is het wat makkelijker voor ons :D
 
Marije

Marije

28/03/2006 20:18:00
Quote Anchor link
$sql = "INSERT INTO nieuws (id, titel, msg, datum, kop) VALUES

ID dus :)
 
Pieter van Linschoten

Pieter van Linschoten

28/03/2006 20:20:00
Quote Anchor link
@ lissy:
Ik weet het niet, maar het geeft sowieso een fout. Het moet namelijk zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?

$sql
= "INSERT INTO nieuws (id, titel, msg, datum, kop) VALUES ('', '". safeMysqlInput( $_POST['titel'] ) ."', '" . safeMysqlInput( $_POST['msg'] . "', '" . safeMysqlInput($_POST['mydate'] . "', '" . safeMysqlInput( $_POST['kop'] . "')";
?>
Gewijzigd op 28/03/2006 20:22:00 door Pieter van Linschoten
 
Marije

Marije

28/03/2006 20:22:00
Quote Anchor link
Parse error: parse error, unexpected ';' in /home/users/conceftp/conceptm.nl/freevoice2/fvbeheer/pages/00nieuws.php on line 68


veroorzaakt door deze 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 ('', '" . safeMysqlInput( $_POST['titel'] ) ."', '" . safeMysqlInput( $_POST['msg'] . "', '" . safeMysqlInput( $_POST['mydate'] . "', '" . safeMysqlInput( $_POST['kop'] . "')";

$res = mysql_query($sql);
 
Donster

Donster

28/03/2006 20:22:00
Quote Anchor link
Wat je doet kan voor problemen zorgen:

Als Magic Quotes aan staat , dan draai je dubbel addslashes , en krijg je de slashes dus daadwerkelijk in je text te staan..

EDIT: Hij draait dan geloof ik ook dubbel mysql_real_escape_string , en ik weet niet wat er dan gebeurd.. ( volgens mij is dat juist onveilig dan)
Gewijzigd op 28/03/2006 20:25:00 door Donster
 
Lissy Pixel

Lissy Pixel

28/03/2006 20:22:00
Quote Anchor link
@ Lapidi : Ik probeer altijd de oplossingen te lezen en te begrijpen en probeer dan er wat van te leren vandaar mijn vraag. Bedankt voor je uitleg en juiste queery ;0)
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.