Fix: XSS injection

This commit is contained in:
Regis Houssin 2010-11-10 21:41:34 +00:00
parent 5807db9a22
commit 263cfa1100
3 changed files with 33 additions and 20 deletions

View File

@ -40,7 +40,7 @@ $showbirthday = GETPOST("showbirthday","int")?GETPOST("showbirthday","int"):0;
$sortfield = GETPOST("sortfield"); $sortfield = GETPOST("sortfield");
$sortorder = GETPOST("sortorder"); $sortorder = GETPOST("sortorder");
$page = GETPOST("page"); $page = GETPOST("page","int");
if ($page == -1) { $page = 0 ; } if ($page == -1) { $page = 0 ; }
$limit = $conf->liste_limit; $limit = $conf->liste_limit;
$offset = $limit * $page ; $offset = $limit * $page ;
@ -48,14 +48,14 @@ if (! $sortorder) $sortorder="ASC";
if (! $sortfield) $sortfield="a.datec"; if (! $sortfield) $sortfield="a.datec";
// Security check // Security check
$socid = isset($_GET["socid"])?$_GET["socid"]:''; $socid = GETPOST("socid","int",1);
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'agenda', 0, '', 'myactions'); $result = restrictedArea($user, 'agenda', 0, '', 'myactions');
$canedit=1; $canedit=1;
if (! $user->rights->agenda->myactions->read) accessforbidden(); if (! $user->rights->agenda->myactions->read) accessforbidden();
if (! $user->rights->agenda->allactions->read) $canedit=0; if (! $user->rights->agenda->allactions->read) $canedit=0;
if (! $user->rights->agenda->allactions->read || $_GET["filter"]=='mine') // If no permission to see all, we show only affected to me if (! $user->rights->agenda->allactions->read || GETPOST("filter","",1)=='mine') // If no permission to see all, we show only affected to me
{ {
$filtera=$user->id; $filtera=$user->id;
$filtert=$user->id; $filtert=$user->id;

View File

@ -38,14 +38,22 @@ $orderid = isset($_GET["orderid"])?$_GET["orderid"]:'';
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'commande',$orderid,''); $result = restrictedArea($user, 'commande',$orderid,'');
$begin=$_GET["begin"]; // Assign and check variable
$sortorder=$_GET["sortorder"]; $year=GETPOST('year','int',1);
$sortfield=$_GET["sortfield"]; $month=GETPOST('month','int',1);
$status=GETPOST('status','int',1);
$onbill=GETPOST('afacturer','int',1);
$page=GETPOST('page','int',1);
$sf_ref=GETPOST('sf_ref','',2);
$begin=GETPOST('begin','',1); // TODO used ?
$sortorder=GETPOST('sortorder','',1);
$sortfield=GETPOST('sortfield','',1);
if (! $sortfield) $sortfield="c.rowid"; if (! $sortfield) $sortfield="c.rowid";
if (! $sortorder) $sortorder="DESC"; if (! $sortorder) $sortorder="DESC";
$limit = $conf->liste_limit; $limit = $conf->liste_limit;
$offset = $limit * $_GET["page"] ; $offset = $limit * $page ;
$html = new Form($db); $html = new Form($db);
$formfile = new FormFile($db); $formfile = new FormFile($db);
@ -69,25 +77,25 @@ $sql.= " WHERE c.fk_soc = s.rowid";
$sql.= " AND s.entity = ".$conf->entity; $sql.= " AND s.entity = ".$conf->entity;
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($socid) $sql.= " AND s.rowid = ".$socid; if ($socid) $sql.= " AND s.rowid = ".$socid;
if ($_GET["month"] > 0) if ($month > 0)
{ {
$sql.= " AND date_format(c.date_commande, '%Y-%m') = '".$_GET["year"]."-".$_GET["month"]."'"; $sql.= " AND date_format(c.date_commande, '%Y-%m') = '".$year."-".$month."'";
} }
if ($_GET["year"] > 0) if ($year > 0)
{ {
$sql.= " AND date_format(c.date_commande, '%Y') = '".$_GET["year"]."'"; $sql.= " AND date_format(c.date_commande, '%Y') = '".$year."'";
} }
if (isset($_GET["status"])) if ($status)
{ {
$sql.= " AND fk_statut = ".$_GET["status"]; $sql.= " AND fk_statut = ".$status;
} }
if (isset($_GET["afacturer"]) && $_GET['afacturer'] == 1) if ($onbill == 1)
{ {
$sql.= " AND fk_statut >=1 AND c.facture = 0"; $sql.= " AND fk_statut >=1 AND c.facture = 0";
} }
if (dol_strlen($_POST["sf_ref"]) > 0) if (dol_strlen($sf_ref) > 0)
{ {
$sql.= " AND c.ref like '%".$_POST["sf_ref"] . "%'"; $sql.= " AND c.ref like '%".$sf_ref . "%'";
} }
$sql.= " ORDER BY $sortfield $sortorder"; $sql.= " ORDER BY $sortfield $sortorder";
$sql.= $db->plimit($limit + 1,$offset); $sql.= $db->plimit($limit + 1,$offset);
@ -109,10 +117,10 @@ if ($resql)
// Si page des commandes a facturer // Si page des commandes a facturer
$link=DOL_URL_ROOT."/compta/commande/fiche.php"; $link=DOL_URL_ROOT."/compta/commande/fiche.php";
$title.=" - ".$langs->trans("StatusOrderToBill"); $title.=" - ".$langs->trans("StatusOrderToBill");
$param="&socid=".$socid."&year=".$_GET["year"]."&month=".$_GET["month"]; $param="&socid=".$socid."&year=".$year."&month=".$month;
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
print_barre_liste($title, $_GET["page"], "liste.php",$param,$sortfield,$sortorder,'',$num); print_barre_liste($title, $page, "liste.php",$param,$sortfield,$sortorder,'',$num);
$i = 0; $i = 0;
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';

View File

@ -41,11 +41,16 @@ if (! defined('ADODB_DATE_VERSION')) include_once(DOL_DOCUMENT_ROOT."/includes/a
* Return value of a param into get or post variable * Return value of a param into get or post variable
* @param paramname Name of parameter to found * @param paramname Name of parameter to found
* @param check Type of check (security) * @param check Type of check (security)
* @param type Type of variable (0 = get or post, 1 = only get, 2 = only post)
* @return string Value found * @return string Value found
*/ */
function GETPOST($paramname,$check='') function GETPOST($paramname,$check='',$type=0)
{ {
$out = isset($_GET[$paramname])?$_GET[$paramname]:(isset($_POST[$paramname])?$_POST[$paramname]:''); if ($type=1) $out = isset($_GET[$paramname])?$_GET[$paramname]:'';
else if ($type=2) isset($_POST[$paramname])?$_POST[$paramname]:'';
else $out = isset($_GET[$paramname])?$_GET[$paramname]:(isset($_POST[$paramname])?$_POST[$paramname]:'');
// Clean value
$out = trim($out); $out = trim($out);
if (!empty($check)) if (!empty($check))