Accéder au contenu.
Menu Sympa

devel - Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?

Objet : devel-adl

Archives de la liste

Re: [Devel] Filtrer uniquement les chiffres sur l'URL ?


Chronologique Discussions 
  • 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






Archives gérées par MHonArc 2.6.16.

Haut de le page