j'essaie de faire des petites applications simple pour mettre quelques
infos en lignes entrées aussi en ligne par un browser
je me pose cependant un certains nombres de questions philosophique
par exemple , je fais un formulaire en html, j entre une chaine de
caractere , traitee par une page php , enregistrée dans un fichier
ttexte , relue par ailleurs et affichée à nouveau dans le browser
ex, lecture du fichier, affichage de la chaine dans la page puis dans
le champ du formulaire pour modification
Bon, ça fonctionne , mais il y a des choses qui me chagrinent là dedans
- j'ai rentré une chaine de caractère en texte et elle se retrouve dans
le fichier comme rentrée . Quand je l affiche à nouveau dans la page,
elle sera affichée telle quelle . Je veux dire par exemple , s'il y a
des accents (ex "é") au moment de l'affichage ils seront écrits comme
si j'avais mis "é" dans mon source et pas "é"
à la limite , on s'en fout un peu, tout reste en france entre français
etc ... , mais quand même
- le deuxième point est qu'on peut rentrer du code qui sera exécuté
lors de l'affichage de la page ce qui peut lui faire faire des choses
bizarres, risquées ou tout planter (par exemple si on entre juste
"<href " , sans refermer le tag dans l'exemple ça plante le
formulaire et on est coincé
bref , que devrais je faire pour obtenir le même résultat de manière un
plus robuste ?
merci !
par ailleurs (voir mon autre post) je voudrais voire comment faire des
choses similaires avec des "textarea" , ou entrer de texte
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
O.L.
jerome balti a exposé le 16/02/2008 :
bonjour
j'essaie de faire des petites applications simple pour mettre quelques infos en lignes entrées aussi en ligne par un browser
[snip]
Bon, ça fonctionne , mais il y a des choses qui me chagrinent là dedans - j'ai rentré une chaine de caractère en texte et elle se retrouve dans le fichier comme rentrée . Quand je l affiche à nouveau dans la page, elle sera affichée telle quelle . Je veux dire par exemple , s'il y a des accents (ex "é") au moment de l'affichage ils seront écrits comme si j'avais mis "é" dans mon source et pas "é"
à la limite , on s'en fout un peu, tout reste en france entre français etc ... , mais quand même
- le deuxième point est qu'on peut rentrer du code qui sera exécuté lors de l'affichage de la page ce qui peut lui faire faire des choses bizarres, risquées ou tout planter (par exemple si on entre juste "<href " , sans refermer le tag dans l'exemple ça plante le formulaire et on est coincé
bref , que devrais je faire pour obtenir le même résultat de manière un plus robuste ?
Solution simple qui devrait résoudre ces 2 problèmes :
remplacer : $objet=$_POST['objet']; par : $objet=html_entities(stripslashes($_POST['objet']), ENT_QUOTES);
(le stripslashes est là pour résoudre au passage le bug qui surgira très probablement si tu entres un texte avec des guillemets ou des apostrophes)
j'essaie de faire des petites applications simple pour mettre quelques infos
en lignes entrées aussi en ligne par un browser
[snip]
Bon, ça fonctionne , mais il y a des choses qui me chagrinent là dedans
- j'ai rentré une chaine de caractère en texte et elle se retrouve dans le
fichier comme rentrée . Quand je l affiche à nouveau dans la page, elle sera
affichée telle quelle . Je veux dire par exemple , s'il y a des accents (ex
"é") au moment de l'affichage ils seront écrits comme si j'avais mis "é" dans
mon source et pas "é"
à la limite , on s'en fout un peu, tout reste en france entre français etc
... , mais quand même
- le deuxième point est qu'on peut rentrer du code qui sera exécuté lors de
l'affichage de la page ce qui peut lui faire faire des choses bizarres,
risquées ou tout planter (par exemple si on entre juste "<href " , sans
refermer le tag dans l'exemple ça plante le formulaire et on est coincé
bref , que devrais je faire pour obtenir le même résultat de manière un plus
robuste ?
Solution simple qui devrait résoudre ces 2 problèmes :
remplacer :
$objet=$_POST['objet'];
par :
$objet=html_entities(stripslashes($_POST['objet']), ENT_QUOTES);
(le stripslashes est là pour résoudre au passage le bug qui surgira
très probablement si tu entres un texte avec des guillemets ou des
apostrophes)
j'essaie de faire des petites applications simple pour mettre quelques infos en lignes entrées aussi en ligne par un browser
[snip]
Bon, ça fonctionne , mais il y a des choses qui me chagrinent là dedans - j'ai rentré une chaine de caractère en texte et elle se retrouve dans le fichier comme rentrée . Quand je l affiche à nouveau dans la page, elle sera affichée telle quelle . Je veux dire par exemple , s'il y a des accents (ex "é") au moment de l'affichage ils seront écrits comme si j'avais mis "é" dans mon source et pas "é"
à la limite , on s'en fout un peu, tout reste en france entre français etc ... , mais quand même
- le deuxième point est qu'on peut rentrer du code qui sera exécuté lors de l'affichage de la page ce qui peut lui faire faire des choses bizarres, risquées ou tout planter (par exemple si on entre juste "<href " , sans refermer le tag dans l'exemple ça plante le formulaire et on est coincé
bref , que devrais je faire pour obtenir le même résultat de manière un plus robuste ?
Solution simple qui devrait résoudre ces 2 problèmes :
remplacer : $objet=$_POST['objet']; par : $objet=html_entities(stripslashes($_POST['objet']), ENT_QUOTES);
(le stripslashes est là pour résoudre au passage le bug qui surgira très probablement si tu entres un texte avec des guillemets ou des apostrophes)
j'essaie de faire des petites applications simple pour mettre quelques infos en lignes entrées aussi en ligne par un browser
je me pose cependant un certains nombres de questions philosophique
par exemple , je fais un formulaire en html, j entre une chaine de caractere , traitee par une page php , enregistrée dans un fichier ttexte , relue par ailleurs et affichée à nouveau dans le browser [...]
Donc bien sûr, il faut dans le traitement convertir tous les caractères en entités pour générer du HTML valide, mais ce n'est pas tout.
Bien sûr, si vous n'interdisez pas d'entrer des tags HTML, il faut aussi valider le code syntaxiquement, sinon ça peut casser votre page. Ca peut être complexe... Voyez ce qui se fait dans les divers wiki, forums et sites avec saisie de commentaires, où on préfère fournir des commandes pour introduire des balises spéciales à partir desquelles le serveur peut ensuite générer du HTML valide.
L'avantage est aussi de restreindre ce qui peut être inséré, ce qui vous évitera de voir de parfaits inconnus utiliser votre site comme pompe à virus, comme page de pub pour sites pornos ou supermarché du viagra online, comme plate-forme d'échange de warez, mp3z, divxz et même de média pédophiles ou terroristes, ou comme relai d'actes de piraterie...
Vous devrez tout de même assurer une modération permanente, mais elle sera sans doute moins fastidieuse ;-)
-- Cordialement. -- * Patrick BRUNET * E-mail: lien sur http://zener131.free.fr/ContactMe
Bonjour.
"jerome balti" <baltibloke@hotmail.com> a écrit dans le message de news:
mn.83d17d827294ade1.42336@hotmail.com...
j'essaie de faire des petites applications simple pour mettre
quelques infos en lignes entrées aussi en ligne par un browser
je me pose cependant un certains nombres de questions
philosophique
par exemple , je fais un formulaire en html, j entre une chaine
de caractere , traitee par une page php , enregistrée dans un
fichier ttexte , relue par ailleurs et affichée à nouveau dans le
browser
[...]
Donc bien sûr, il faut dans le traitement convertir tous les caractères en
entités pour générer du HTML valide, mais ce n'est pas tout.
Bien sûr, si vous n'interdisez pas d'entrer des tags HTML, il faut aussi
valider le code syntaxiquement, sinon ça peut casser votre page. Ca peut
être complexe...
Voyez ce qui se fait dans les divers wiki, forums et sites avec saisie de
commentaires, où on préfère fournir des commandes pour introduire des
balises spéciales à partir desquelles le serveur peut ensuite générer du
HTML valide.
L'avantage est aussi de restreindre ce qui peut être inséré, ce qui vous
évitera de voir de parfaits inconnus utiliser votre site comme pompe à
virus, comme page de pub pour sites pornos ou supermarché du viagra online,
comme plate-forme d'échange de warez, mp3z, divxz et même de média
pédophiles ou terroristes, ou comme relai d'actes de piraterie...
Vous devrez tout de même assurer une modération permanente, mais elle sera
sans doute moins fastidieuse ;-)
--
Cordialement.
--
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
j'essaie de faire des petites applications simple pour mettre quelques infos en lignes entrées aussi en ligne par un browser
je me pose cependant un certains nombres de questions philosophique
par exemple , je fais un formulaire en html, j entre une chaine de caractere , traitee par une page php , enregistrée dans un fichier ttexte , relue par ailleurs et affichée à nouveau dans le browser [...]
Donc bien sûr, il faut dans le traitement convertir tous les caractères en entités pour générer du HTML valide, mais ce n'est pas tout.
Bien sûr, si vous n'interdisez pas d'entrer des tags HTML, il faut aussi valider le code syntaxiquement, sinon ça peut casser votre page. Ca peut être complexe... Voyez ce qui se fait dans les divers wiki, forums et sites avec saisie de commentaires, où on préfère fournir des commandes pour introduire des balises spéciales à partir desquelles le serveur peut ensuite générer du HTML valide.
L'avantage est aussi de restreindre ce qui peut être inséré, ce qui vous évitera de voir de parfaits inconnus utiliser votre site comme pompe à virus, comme page de pub pour sites pornos ou supermarché du viagra online, comme plate-forme d'échange de warez, mp3z, divxz et même de média pédophiles ou terroristes, ou comme relai d'actes de piraterie...
Vous devrez tout de même assurer une modération permanente, mais elle sera sans doute moins fastidieuse ;-)
-- Cordialement. -- * Patrick BRUNET * E-mail: lien sur http://zener131.free.fr/ContactMe
Pierre Goiffon
Patrick 'Zener' Brunet wrote:
j'essaie de faire des petites applications simple pour mettre quelques infos en lignes entrées aussi en ligne par un browser
Donc bien sûr, il faut dans le traitement convertir tous les caractères en entités pour générer du HTML valide, mais ce n'est pas tout.
Non, non et non ! Pourquoi donc s'enquiquiner avec les entités alors que bien paramétrer le codage utilisé suffit ? Lire : http://pgoiffon.free.fr/info/i18n/web-charset_html.php
Bien sûr, si vous n'interdisez pas d'entrer des tags HTML, il faut aussi valider le code syntaxiquement, sinon ça peut casser votre page. Ca peut être complexe...
En effet... En plus du prb de validité du code html saisi, il faut penser à toutes les possibilités de piéger des utilisateurs... Pour la validité du HTML, il doit y avoir moyen d'utiliser Tidy ? Et pour le reste, le plus simple est je crois une liste blanche de balises autorisées...
Patrick 'Zener' Brunet wrote:
j'essaie de faire des petites applications simple pour mettre
quelques infos en lignes entrées aussi en ligne par un browser
Donc bien sûr, il faut dans le traitement convertir tous les caractères en
entités pour générer du HTML valide, mais ce n'est pas tout.
Non, non et non ! Pourquoi donc s'enquiquiner avec les entités alors que
bien paramétrer le codage utilisé suffit ? Lire :
http://pgoiffon.free.fr/info/i18n/web-charset_html.php
Bien sûr, si vous n'interdisez pas d'entrer des tags HTML, il faut aussi
valider le code syntaxiquement, sinon ça peut casser votre page. Ca peut
être complexe...
En effet... En plus du prb de validité du code html saisi, il faut
penser à toutes les possibilités de piéger des utilisateurs... Pour la
validité du HTML, il doit y avoir moyen d'utiliser Tidy ? Et pour le
reste, le plus simple est je crois une liste blanche de balises
autorisées...
j'essaie de faire des petites applications simple pour mettre quelques infos en lignes entrées aussi en ligne par un browser
Donc bien sûr, il faut dans le traitement convertir tous les caractères en entités pour générer du HTML valide, mais ce n'est pas tout.
Non, non et non ! Pourquoi donc s'enquiquiner avec les entités alors que bien paramétrer le codage utilisé suffit ? Lire : http://pgoiffon.free.fr/info/i18n/web-charset_html.php
Bien sûr, si vous n'interdisez pas d'entrer des tags HTML, il faut aussi valider le code syntaxiquement, sinon ça peut casser votre page. Ca peut être complexe...
En effet... En plus du prb de validité du code html saisi, il faut penser à toutes les possibilités de piéger des utilisateurs... Pour la validité du HTML, il doit y avoir moyen d'utiliser Tidy ? Et pour le reste, le plus simple est je crois une liste blanche de balises autorisées...
jerome balti
remplacer : $objet=$_POST['objet']; par : $objet=htmlentities(stripslashes($_POST['objet']), ENT_QUOTES);
merci de m'indiquer la fonction il y a tellement de doc dispo sur le sujet que je n'arrive pas toujours à mettre le nez sur ce que je cherche ;-)
(le stripslashes est là pour résoudre au passage le bug qui surgira très probablement si tu entres un texte avec des guillemets ou des apostrophes)
oui, celui là je l'avais déjà eu la semaine d'avant ;-)
remplacer :
$objet=$_POST['objet'];
par :
$objet=htmlentities(stripslashes($_POST['objet']), ENT_QUOTES);
merci de m'indiquer la fonction
il y a tellement de doc dispo sur le sujet que je n'arrive pas toujours
à mettre le nez sur ce que je cherche ;-)
(le stripslashes est là pour résoudre au passage le bug qui surgira très
probablement si tu entres un texte avec des guillemets ou des apostrophes)
oui, celui là je l'avais déjà eu la semaine d'avant ;-)
remplacer : $objet=$_POST['objet']; par : $objet=htmlentities(stripslashes($_POST['objet']), ENT_QUOTES);
merci de m'indiquer la fonction il y a tellement de doc dispo sur le sujet que je n'arrive pas toujours à mettre le nez sur ce que je cherche ;-)
(le stripslashes est là pour résoudre au passage le bug qui surgira très probablement si tu entres un texte avec des guillemets ou des apostrophes)
oui, celui là je l'avais déjà eu la semaine d'avant ;-)
jerome balti
merci
Et pour le reste, le plus simple est je crois une liste blanche de balises autorisées...
tiens pour la liste blanche... je remarque que les modules de blogs, etc... utilisent souvent des systèmes du genre :
l'utilisateur tape des balises similaire à HTML dans son texte
ex [b][/b] pour <b></b> ... etc
pour le traitement de la saisie, y a t il une fonction qui remplace une un groupe de caractere par un autre dans une chaine pour faire la substitution facilement ? (je présume que oui, je vais fouiner)
merci
Et pour le reste, le plus
simple est je crois une liste blanche de balises autorisées...
tiens pour la liste blanche...
je remarque que les modules de blogs, etc... utilisent souvent des
systèmes du genre :
l'utilisateur tape des balises similaire à HTML dans son texte
ex [b][/b] pour <b></b> ... etc
pour le traitement de la saisie, y a t il une fonction qui remplace une
un groupe de caractere par un autre dans une chaine pour faire la
substitution facilement ?
(je présume que oui, je vais fouiner)
Et pour le reste, le plus simple est je crois une liste blanche de balises autorisées...
tiens pour la liste blanche... je remarque que les modules de blogs, etc... utilisent souvent des systèmes du genre :
l'utilisateur tape des balises similaire à HTML dans son texte
ex [b][/b] pour <b></b> ... etc
pour le traitement de la saisie, y a t il une fonction qui remplace une un groupe de caractere par un autre dans une chaine pour faire la substitution facilement ? (je présume que oui, je vais fouiner)
Patrick 'Zener' Brunet
Bonsoir.
"jerome balti" a écrit dans le message de news:
merci
> Et pour le reste, le plus > simple est je crois une liste blanche de balises > autorisées...
tiens pour la liste blanche... je remarque que les modules de blogs, etc... utilisent souvent des systèmes du genre :
l'utilisateur tape des balises similaire à HTML dans son texte
ex [b][/b] pour <b></b> ... etc
Oui, c'est ce que je suggérais, et ça vous donne le contrôle total des tags qui peuvent être insérés.
Il ne vous reste plus qu'à commencer par échapper les quotes simples et doubles sous toutes les formes possibles afin d'être sûr que votre PHP ne se fasse pas avoir par une injection de code, et dans le pire des cas, ce qu'il ne traduira pas apparaîtra comme du texte natif.
Vous rajoutez alors un preview et une option de correction, et vous conciliez ainsi souplesse et sécurité (à la sémantique du contenu près, c'est un autre problème).
Ah oui, pensez aussi à limiter la quantité de texte, pour éviter la saturation, et dans ce cas il est sympa de rajouter un compteur de nombre de caractères restants. Prévoyez aussi une convention pour les passages à la ligne et sauts de paragraphe (c'est différent), si vous convertissez en HTML ils seront perdus, comme sur beaucoup de sites moches qui ne gardent qu'un dégluti infâme.
-- Cordialement. -- * Patrick BRUNET www.ipzb.fr * E-mail: lien sur http://zener131.free.fr/ContactMe
Bonsoir.
"jerome balti" <baltibloke@hotmail.com> a écrit dans le message de news:
mn.9b707d82fcc9099e.42336@hotmail.com...
merci
> Et pour le reste, le plus
> simple est je crois une liste blanche de balises
> autorisées...
tiens pour la liste blanche...
je remarque que les modules de blogs, etc... utilisent
souvent des systèmes du genre :
l'utilisateur tape des balises similaire à HTML dans
son texte
ex [b][/b] pour <b></b> ... etc
Oui, c'est ce que je suggérais, et ça vous donne le contrôle total des tags
qui peuvent être insérés.
Il ne vous reste plus qu'à commencer par échapper les quotes simples et
doubles sous toutes les formes possibles afin d'être sûr que votre PHP ne se
fasse pas avoir par une injection de code, et dans le pire des cas, ce qu'il
ne traduira pas apparaîtra comme du texte natif.
Vous rajoutez alors un preview et une option de correction, et vous
conciliez ainsi souplesse et sécurité (à la sémantique du contenu près,
c'est un autre problème).
Ah oui, pensez aussi à limiter la quantité de texte, pour éviter la
saturation, et dans ce cas il est sympa de rajouter un compteur de nombre de
caractères restants.
Prévoyez aussi une convention pour les passages à la ligne et sauts de
paragraphe (c'est différent), si vous convertissez en HTML ils seront
perdus, comme sur beaucoup de sites moches qui ne gardent qu'un dégluti
infâme.
--
Cordialement.
--
* Patrick BRUNET www.ipzb.fr
* E-mail: lien sur http://zener131.free.fr/ContactMe
> Et pour le reste, le plus > simple est je crois une liste blanche de balises > autorisées...
tiens pour la liste blanche... je remarque que les modules de blogs, etc... utilisent souvent des systèmes du genre :
l'utilisateur tape des balises similaire à HTML dans son texte
ex [b][/b] pour <b></b> ... etc
Oui, c'est ce que je suggérais, et ça vous donne le contrôle total des tags qui peuvent être insérés.
Il ne vous reste plus qu'à commencer par échapper les quotes simples et doubles sous toutes les formes possibles afin d'être sûr que votre PHP ne se fasse pas avoir par une injection de code, et dans le pire des cas, ce qu'il ne traduira pas apparaîtra comme du texte natif.
Vous rajoutez alors un preview et une option de correction, et vous conciliez ainsi souplesse et sécurité (à la sémantique du contenu près, c'est un autre problème).
Ah oui, pensez aussi à limiter la quantité de texte, pour éviter la saturation, et dans ce cas il est sympa de rajouter un compteur de nombre de caractères restants. Prévoyez aussi une convention pour les passages à la ligne et sauts de paragraphe (c'est différent), si vous convertissez en HTML ils seront perdus, comme sur beaucoup de sites moches qui ne gardent qu'un dégluti infâme.
-- Cordialement. -- * Patrick BRUNET www.ipzb.fr * E-mail: lien sur http://zener131.free.fr/ContactMe