Actions
Fonctionnalité #16971
ferméANALYSE - Fonction sql non injectable dans la clause where des champs custom.
Début:
03/05/2021
Echéance:
Description
clause de référence :
select * from entities where entity_id = (select entity_by_res_id(100))
test effectué :
ou
![](pastedImage (7).png)
Fichiers
Actions
#1
Mis à jour par Ludovic ARAUJO il y a plus de 3 ans
- Priorité changé de 2-Sérieux à 0-Bloquant
Actions
#2
Mis à jour par Ludovic ARAUJO il y a plus de 3 ans
résultat en CMD :
psql -U maarch -d 2010 -c "select * from entities where entity_id = (select entity_by_res_id(100))"
id | entity_id | entity_label | short_label | entity_full_name | enabled | adrs_1 | adrs_2 | adrs_3 | zipcode | city | country | email | business_id | parent_entity_id | entity_type | ldap_id | producer_service | folder_import | external_id
----+-----------+---------------------------+---------------------------+------------------+---------+--------+--------+--------+---------+------+---------+-------------------+----------------------+------------------+-------------+---------+------------------+---------------+-------------
1 | VILLE | Ville de Maarch-les-bains | Ville de Maarch-les-bains | | Y | | | | | | | support@maarch.fr | 45239273100025/VILLE | | Direction | | | | {}
Actions
#3
Mis à jour par Ludovic ARAUJO il y a plus de 3 ans
fonction sql :
create or replace function entity_by_res_id(id int) returns varchar AS $BODY$
declare
entity varchar;
res varchar;
begin
select initiator into entity from res_view_letterbox where res_id = id;
select entity_tree(entity) into res;
return res;
END;
$BODY$ LANGUAGE plpgsql;
create or replace function entity_tree(entity varchar) returns varchar AS $BODY$
declare
parentid varchar;
res varchar;
begin
select parent_entity_id into parentid from entities where entity_id = $1;
if parentid is null or parentid = '' then
return $1;
else
select entity_tree(parentid) into res;
return res;
end if;
END;
$BODY$ LANGUAGE plpgsql;
Actions
#5
Mis à jour par Support Maarch il y a plus de 3 ans
- Statut changé de A qualifier à A traiter
Actions
#6
Mis à jour par Ludovic ARAUJO il y a plus de 3 ans
- Version cible changé de Inscription Backlog Courrier à Courrier 20.10 TMA
Actions
#7
Mis à jour par Emmanuel DILLARD il y a plus de 3 ans
- Tracker changé de Anomalie à Fonctionnalité
- Sujet changé de Fonction sql non injectable dans la clause where des champs custom. à ANALYSE - Fonction sql non injectable dans la clause where des champs custom.
- Statut changé de A traiter à Complément d'Informations
- Assigné à changé de EDI PO à Ludovic ARAUJO
A tester avec une vue
-> vue avec 2 colonnes
Select non autorisé (pas de sous-requêtes dans les clauses)
Actions
#8
Mis à jour par Ludovic ARAUJO il y a plus de 3 ans
code bloquant CustomFieldController.php ligne 356-358:
if (stripos($body['values']['clause'], 'select') !== false) {
return ['errors' => 'Clause is not valid', 'lang' => 'invalidClause'];
}
Actions
#10
Mis à jour par Ludovic ARAUJO il y a plus de 3 ans
avec la vue pas de soucis.
create or replace view vue
AS select r.res_id,
r.typist,
e.entity_label as root_entity
from res_letterbox r
left join entities e on entity_id = entity_by_res_id(r.res_id::int)
Actions
#12
Mis à jour par Ludovic ARAUJO il y a plus de 3 ans
- Assigné à changé de Ludovic ARAUJO à EDI PO
Actions
#13
Mis à jour par Emmanuel DILLARD il y a plus de 3 ans
- Priorité changé de 0-Bloquant à 1-Majeur
Actions
#14
Mis à jour par Emmanuel DILLARD il y a plus de 3 ans
- Statut changé de Complément d'Informations à Clôturé
Actions
#15
Mis à jour par Emmanuel DILLARD il y a plus de 3 ans
- Projet changé de 298 à Backlog Courrier
- Version cible changé de Courrier 20.10 TMA à 287
Actions
#17
Mis à jour par Emmanuel DILLARD il y a presque 3 ans
- Version cible changé de 292 à 20.10 TMA3
Actions