Objet : devel-adl
Archives de la liste
- From: David MENTRE <dmentre AT linux-france.org>
- To: "Developpement de l'Agenda du Libre" <devel AT agendadulibre.org>
- Subject: Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?
- Date: Thu, 11 Aug 2005 21:44:00 +0200
- List-archive: <http://lolut.utbm.info/pipermail/devel>
- List-id: Developpement de l'Agenda du Libre <devel.agendadulibre.org>
- Organization: none
Salut Thomas,
Thomas Petazzoni <thomas.petazzoni AT enix.org> writes:
> Region et Id sont des nombres. Par contre, il ne sont pas vraiment bornés.
Ci-dessous un patch qui fait des vérifs de base sur tous les $_GET[] que
j'ai pu trouver.
> Dans les autres choses à vérifier, il y a les problèmes d'apostrophe et
> de guillemets dans les requêtes SQL, formées à partir des valeurs
> saisies par l'utilisateur.
J'y connais rien en SQL, donc je laisse le soin à d'autres d'y jeter un
coup d'oeil.
diff -ru -x '.svn*' trunk/funcs.inc.php agenda/funcs.inc.php
--- trunk/funcs.inc.php 2005-08-11 20:58:14.377750456 +0200
+++ agenda/funcs.inc.php 2005-08-11 21:23:50.718191208 +0200
@@ -455,6 +455,16 @@
return htmlspecialchars(stripslashes(strip_tags($str, $allowed_tags)));
}
+/* Function to safely get identifiers from forms */
+function get_safe_integer($name, $default)
+{
+ if (ereg("^[0-9]+$", $_GET[$name])) { // match only positive integers
+ return $_GET[$name];
+ } else {
+ return $default;
+ }
+}
+
function edit_event ($db, $title, $start, $end, $description,
$city, $region, $locality, $url, $contact,
$wants_preview = FALSE)
diff -ru -x '.svn*' trunk/moderate.php agenda/moderate.php
--- trunk/moderate.php 2005-08-09 21:11:55.000000000 +0200
+++ agenda/moderate.php 2005-08-11 21:12:40.770038808 +0200
@@ -208,6 +208,7 @@
return $row->id;
}
+
$session = new session();
if (! $session->exists("agenda_libre_id"))
@@ -254,16 +255,18 @@
echo "<p><b>Important</b>: <a href=\"moderateinfos.php\">Recommandations sur
la modération</a></p>";
+$id = get_safe_integer('id', 0);
+
/*
* Edit an event
*/
if ($_POST['__event_edit'])
{
- $event = fetch_event($db, $_GET['id']);
+ $event = fetch_event($db, $id);
if ($event)
{
- echo "<form action=\"?id=".$_GET['id']."\" method=\"post\">\n";
+ echo "<form action=\"?id=".$id."\" method=\"post\">\n";
edit_event ($db, $event->title,
strtotime($event->start_time),
strtotime($event->end_time),
@@ -285,7 +288,7 @@
*/
else if ($_POST['__event_save'])
{
- $ret = save_event ($db, $_GET['id'],
+ $ret = save_event ($db, $id,
$_POST['__event_title'],
mktime($_POST['__event_start_hour'],
$_POST['__event_start_minute'],
@@ -322,7 +325,7 @@
*/
else if ($_POST['__event_accept'])
{
- accept_event ($db, $_GET['id'], $session->value("agenda_libre_id"));
+ accept_event ($db, $id, $session->value("agenda_libre_id"));
}
/*
@@ -330,7 +333,7 @@
*/
else if ($_POST['__event_delete'])
{
- delete_event ($db, $_GET['id'], $session->value("agenda_libre_id"));
+ delete_event ($db, $id, $session->value("agenda_libre_id"));
}
/*
diff -ru -x '.svn*' trunk/rss.php agenda/rss.php
--- trunk/rss.php 2005-06-30 21:00:26.000000000 +0200
+++ agenda/rss.php 2005-08-11 21:19:28.591040592 +0200
@@ -65,9 +65,11 @@
}
/* Fetch region name */
-if ($_GET['region'] != "all")
+$region_num = get_safe_integer('region', 'all');
+
+if ($region_num != "all")
{
- $ret = $db->query ("select name from regions where id=" . $_GET['region']);
+ $ret = $db->query ("select name from regions where id=" . $region_num);
if ($ret == FALSE)
{
echo "Erreur lors de la recherche de la région";
@@ -98,7 +100,7 @@
echo " <rdf:Seq>\n";
/* Generate item list */
-$list = get_events ($db, $_GET['region']);
+$list = get_events ($db, $region_num);
if ($list == FALSE)
{
echo "Erreur lors de la récupération des évènements";
@@ -115,7 +117,7 @@
echo "</channel>\n\n\n";
/* Generate items */
-$list = get_events ($db, $_GET['region']);
+$list = get_events ($db, $region_num);
if ($list == FALSE)
{
echo "Erreur lors de la récupération des évènements";
diff -ru -x '.svn*' trunk/showevent.php agenda/showevent.php
--- trunk/showevent.php 2005-06-30 21:00:26.000000000 +0200
+++ agenda/showevent.php 2005-08-11 21:24:52.933733008 +0200
@@ -27,7 +27,7 @@
put_header("Agenda du Libre - Informations sur un évènement");
-$event = fetch_event ($db, $_GET['id']);
+$event = fetch_event ($db, get_safe_integer('id', 0));
if ($event)
{
Amicalement,
d.
--
pub 1024D/A3AD7A2A 2004-10-03 David MENTRE <dmentre AT linux-france.org>
5996 CC46 4612 9CA4 3562 D7AC 6C67 9E96 A3AD 7A2A
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, Thomas Petazzoni, 07/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 09/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 09/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, Thomas Petazzoni, 09/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 11/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, Thomas Petazzoni, 11/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 11/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, Thomas Petazzoni, 11/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 11/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, Thomas Petazzoni, 09/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 09/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 09/08/2005
- Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?, David MENTRE, 09/08/2005
Archives gérées par MHonArc 2.6.16.